nUnit - 忽略DLL的GAC副本

时间:2010-09-20 11:56:50

标签: .net nunit gac

我正在使用nUnit对单元进行单元测试。

程序集在我的项目输出目录(\ bin \ debug)中,并从此位置加载到nUnit(程序集>添加程序集)。

然而,旧版本也在GAC中,nUnit正在选择此版本。

我当然可以删除旧版本并在构建时重新安装到GAC,但这需要一些时间 - 任何强制nUnit(或更可能是.NET框架)从bin \ debug中获取版本的方法DIR?

修改

两个版本的AssemblyVersion(以及强名称)都是固定的 - 它只是根据KB 556041 - How to use Assembly Version and Assembly File Version更改的文件版本

2 个答案:

答案 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中有一个版本的程序集,如果你引用项目测试的程序集,它仍然会采用未签名的版本。 完成测试后,重新打开设置并部署。

不太理想,因为你现在已经有了额外的步骤,但是尽可能接近我没有做很多工作。