【问题标题】:NUnit console can't load assembly for serialization testNUnit 控制台无法加载程序集以进行序列化测试
【发布时间】:2013-10-30 14:58:56
【问题描述】:

错误信息:

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.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 时,会出现上述错误。

我该如何解决这个问题?

【问题讨论】:

    标签: serialization nunit nunit-console


    【解决方案1】:

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

    来自the documentation

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

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

    【讨论】:

    • 好的,它试图从哪里加载 MyCompany.Plates?可以用融合日志查看器查看吗?
    【解决方案2】:

    我通过在 .nunit 设置文件上设置 appbase 来解决此问题,以指向 PlatesTests.dllMyCompany.Plates.dll 的位置。

    新文件如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      相关资源
      最近更新 更多