无法加载文件或程序集'Microsoft.VisualStudio.TestPlatform.ObjectModel,Version = 11.0.0.0'

时间:2017-11-07 10:27:04

标签: c# .net unit-testing mstest

我正在使用MSTest.TestAdapter和MSTest.TestFramework版本1.2.0进行MS测试单元测试。在我的本地计算机(Visual Studio 2017)上,测试运行完美,但在我们的构建服务器上,我们得到以下消息:

无法加载文件或程序集'Microsoft.VisualStudio.TestPlatform.ObjectModel,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。

然后我用ildasm检查了这个程序集的引用,实际上它是11.0.0.0版本(见下文)

但是我找不到这个程序集的v11,在线只有nuget上的v14版本:https://www.nuget.org/packages/Microsoft.VisualStudio.TestPlatform.ObjectModel/

我也在我的机器上搜索,但找不到v11。

所以我的问题是,为什么测试在我的机器上而不是在构建服务器上运行?

我尝试了装配绑定,但没有成功。

enter image description here

6 个答案:

答案 0 :(得分:2)

您需要的NuGet包是由Microsoft创作的Microsoft.TestPlatform.ObjectModel,而不是由Christopher.Haws撰写的Microsoft.VisualStudio.TestPlatform.ObjectModel包。

https://www.nuget.org/packages/microsoft.testplatform.objectmodel/

Microsoft软件包中包含Microsoft.VisualStudio.TestPlatform.ObjectModel程序集,尽管它没有以这种方式命名。我得到了同样的错误,当我安装了Microsoft软件包的v11时,它为我修复了构建服务器上的构建。

答案 1 :(得分:1)

在另一个项目中再次遇到同样的问题之后,我们再次查看了它并找到了解决方案。

Install-Package Microsoft.TestPlatform.ObjectModel -Version 11.0.0

但这还不够,为了确保构建服务器拾取程序集,我们将其作为部署项添加到基础测试类中;

[DeploymentItem("Microsoft.VisualStudio.TestPlatform.ObjectModel.dll")]

现在构建服务器再次进行单元测试: - )

Grtz

答案 2 :(得分:1)

同一问题,我能够安装最新版本:

Install-Package Microsoft.TestPlatform.ObjectModel -Version 15.8.0

然后将绑定重定向添加到测试项目app.config:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.VisualStudio.TestPlatform.ObjectModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
                <bindingRedirect oldVersion="11.0.0.0-14.0.0.0" newVersion="15.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

答案 3 :(得分:1)

建议其他解决方法here

  

不反映来自   “ Microsoft.VisualStudio.TestPlatform.ObjectModel”程序集。       要么       将Microsoft.NET.Test.Sdk降级到15.3.0。

第二种选择可能不适用于您,因为您使用的是.NET Framework而不是.NET Core。

更多背景:

答案 4 :(得分:0)

在将NUnit 3.0的NuGet软件包错误地添加到解决方案中的多个项目后,将其删除后,遇到了相同的错误。

参考没有被完全删除。我必须手动打开每个.csproj文件,并删除对以前删除的NuGet包的所有引用。清理并重建后,错误消失了。

答案 5 :(得分:0)

在测试输出窗口中,我遇到了这样的错误……

[MSTest][Discovery][C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll] Failed to discover tests from assembly C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll. Reason:Type 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Trait' in Assembly 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.

我设法通过清除所有objbin\debug文件夹来使测试人员正常工作,但是它回来了,所以我看上去更加深入,发现只是搜索Microsoft.VisualStudio.TestPlatform.ObjectModel.dll并删除任何匹配的文件就足以使测试运行器正常工作