我正在使用nUnit对单元进行单元测试。
程序集在我的项目输出目录(\ bin \ debug)中,并从此位置加载到nUnit(程序集>添加程序集)。
然而,旧版本也在GAC中,nUnit正在选择此版本。
我当然可以删除旧版本并在构建时重新安装到GAC,但这需要一些时间 - 任何强制nUnit(或更可能是.NET框架)从bin \ debug中获取版本的方法DIR?
修改
两个版本的AssemblyVersion(以及强名称)都是固定的 - 它只是根据KB 556041 - How to use Assembly Version and Assembly File Version更改的文件版本
答案 0 :(得分:1)
您可以尝试在.config文件中生成<bindingRedirect>
以重定向到本地程序集,并且不使用GAC中安装的程序集。
当您针对强名称程序集构建.NET Framework应用程序时,默认情况下,应用程序在运行时使用该版本的程序集,即使有新版本可用。但是,您可以将应用程序配置为针对较新版本的程序集
运行...
<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>
这对你来说也很有趣:
希望有所帮助!
答案 1 :(得分:0)
在这种情况下,我倾向于在单元测试时不签署组件,直到我准备好部署它。这是一个单步过程,您可以转到项目属性并清除签署装配设置。重新编译时,下次运行测试时,NUnit将从本地bin文件夹中提取它,因为无法将未签名的程序集部署到GAC。我发现即使你已经在GAC中有一个版本的程序集,如果你引用项目测试的程序集,它仍然会采用未签名的版本。 完成测试后,重新打开设置并部署。
不太理想,因为你现在已经有了额外的步骤,但是尽可能接近我没有做很多工作。