NUnit控制台无法加载程序集进行序列化测试

时间:2013-10-30 14:58:56

标签: serialization nunit nunit-console

  

System.Runtime.Serialization.SerializationException:无法找到   程序集'MyCompany.Plates,Version = 12.15.0.0,Culture = neutral,   公钥= 0b9f95a95d107d22' 。   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

有两个dll:

PlatesTests.dll MyCompany.Plates.dll

测试全部在PlatesTests.dll中。被序列化的对象位于MyCompany.Plates.dll中。

通过将PlatesTests.dll传递给nunit-console.exe来运行时,一切都会通过。

但是我们的构建系统使用.nunit文件,如

<NUnitProject>
  <Settings activeconfig="Default" />
  <Config name="Default" binpathtype="Auto">
    <assembly path="..\..\Build Products\ReleaseTests\PlatesTests.dll" />
   </Config>
</NUnitProject>

当针对此.nunit文件运行nunit-console时,它会出现上述错误。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我相信您必须使用/ noshadow运行控制台项目

来自the documentation

  

/ noshadow选项禁用程序集的阴影复制,以提高性能。

此阴影复制有时会导致项目的程序集加载失败。

答案 1 :(得分:0)

通过将.nunit设置文件中的 appbase 设置为指向PlatesTests.dll和MyCompany.Plates.dll所在的位置来解决此问题。

新文件如下所示:

<NUnitProject>
  <Settings activeconfig="Default" appbase="..\..\Build Products\ReleaseTests" />
  <Config name="Default" binpathtype="Auto">
    <assembly path="..\..\Build Products\ReleaseTests\PlatesTests.dll" />
  </Config>
</NUnitProject>