.net nUnit-忽略DLL的GAC副本
我正在使用nUnit对组件进行单元测试 程序集位于我的项目输出目录(\bin\debug)中,并从此位置加载到nUnit(程序集>添加程序集) 然而,GAC中也有一个较旧的版本,nUnit取而代之的是这个版本 当然,我可以删除旧版本,并在构建时重新安装到GAC,但这需要一些时间-是否有任何方法可以强制nUnit(或者更可能是.NET framework)从bin\debug dir获取版本 编辑 这两个版本的AssemblyVersion(以及因此而产生的强名称)是固定的-这是唯一一个根据更改的文件版本,您可以尝试在.config文件中创建一个重定向到本地程序集,而不使用GAC中安装的程序集 当您针对强名称程序集构建.NET Framework应用程序时,默认情况下,即使有新版本可用,应用程序也会在运行时使用该版本的程序集。但是,您可以将应用程序配置为针对较新版本的程序集运行.net nUnit-忽略DLL的GAC副本,.net,nunit,gac,.net,Nunit,Gac,我正在使用nUnit对组件进行单元测试 程序集位于我的项目输出目录(\bin\debug)中,并从此位置加载到nUnit(程序集>添加程序集) 然而,GAC中也有一个较旧的版本,nUnit取而代之的是这个版本 当然,我可以删除旧版本,并在构建时重新安装到GAC,但这需要一些时间-是否有任何方法可以强制nUnit(或者更可能是.NET framework)从bin\debug dir获取版本 编辑 这两个版本的AssemblyVersion(以及因此而产生的强名称)是固定的-这是唯一一个根据更改的
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<bindingRedirect
oldVersion="1.0.0.0"
newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
希望有帮助 在这种情况下,我倾向于在单元测试时不签署程序集,直到我准备好部署它。这是一个单步过程,在该过程中,您可以转到项目属性并清除“对部件进行签名”设置。重新编译时,下次运行测试时,NUnit将从本地bin文件夹中拾取它,因为未签名的程序集无法部署到GAC。我发现,即使您已经在GAC中有了程序集的版本,但如果您引用项目测试中的程序集,它仍然会采用未签名的版本。
完成测试后,可以重新打开设置并进行部署
这并不理想,因为您现在有额外的步骤要完成,但我可以在不做大量工作的情况下尽可能接近它。只有当您的bin\debug副本(以及您的项目引用)与GAC中的版本号相同时,才会发生这种情况。AssemblyVersion编号相同,我已经添加了额外的评论来解释这一关键信息,我很糟糕+1作为一个很好的参考(虽然我知道绑定重定向),但这对我没有帮助,因为GAC中的版本具有相同的AssemblyVersion。好的,如果程序集版本相同,并且您无法更改它,您几乎没有机会,因为.NET首先从GAC找到它。这不是nUnit行为,而是标准的.NET行为。