0

错误信息:

System.Runtime.Serialization.SerializationException:找不到程序集“MyCompany.Plates,版本=12.15.0.0,文化=中性,PublicKeyToken=0b9f95a95d107d22”。+++++++++++++++++++ 堆栈跟踪:在 System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()

有两个DLL文件:

PlatesTests.dllMyCompany.Plates.dll

测试都在PlatesTests.dll. 被序列化的对象位于MyCompany.Plates.dll.

当通过传递PlatesTests.dllto运行时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 时,它​​会给出上述错误。

我该如何解决这个问题?

4

2 回答 2

0

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

文档

/noshadow 选项禁用程序集的卷影复制以提供改进的性能。

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

于 2013-10-30T15:08:24.917 回答
0

我通过在设置文件上设置appbase.nunit以指向它们所在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>
于 2013-10-30T16:46:19.197 回答