Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net nUnit-忽略DLL的GAC副本_.net_Nunit_Gac - Fatal编程技术网

.net nUnit-忽略DLL的GAC副本

.net nUnit-忽略DLL的GAC副本,.net,nunit,gac,.net,Nunit,Gac,我正在使用nUnit对组件进行单元测试 程序集位于我的项目输出目录(\bin\debug)中,并从此位置加载到nUnit(程序集>添加程序集) 然而,GAC中也有一个较旧的版本,nUnit取而代之的是这个版本 当然,我可以删除旧版本,并在构建时重新安装到GAC,但这需要一些时间-是否有任何方法可以强制nUnit(或者更可能是.NET framework)从bin\debug dir获取版本 编辑 这两个版本的AssemblyVersion(以及因此而产生的强名称)是固定的-这是唯一一个根据更改的

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

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

然而,GAC中也有一个较旧的版本,nUnit取而代之的是这个版本

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

编辑

这两个版本的AssemblyVersion(以及因此而产生的强名称)是固定的-这是唯一一个根据更改的文件版本,您可以尝试在.config文件中创建一个重定向到本地程序集,而不使用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>




希望有帮助

在这种情况下,我倾向于在单元测试时不签署程序集,直到我准备好部署它。这是一个单步过程,在该过程中,您可以转到项目属性并清除“对部件进行签名”设置。重新编译时,下次运行测试时,NUnit将从本地bin文件夹中拾取它,因为未签名的程序集无法部署到GAC。我发现,即使您已经在GAC中有了程序集的版本,但如果您引用项目测试中的程序集,它仍然会采用未签名的版本。 完成测试后,可以重新打开设置并进行部署


这并不理想,因为您现在有额外的步骤要完成,但我可以在不做大量工作的情况下尽可能接近它。

只有当您的bin\debug副本(以及您的项目引用)与GAC中的版本号相同时,才会发生这种情况。AssemblyVersion编号相同,我已经添加了额外的评论来解释这一关键信息,我很糟糕+1作为一个很好的参考(虽然我知道绑定重定向),但这对我没有帮助,因为GAC中的版本具有相同的AssemblyVersion。好的,如果程序集版本相同,并且您无法更改它,您几乎没有机会,因为.NET首先从GAC找到它。这不是nUnit行为,而是标准的.NET行为。