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

26
我正在使用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


1
你有没有找到解决办法? - akabak
嘿,不好意思我没有找到解决方案。我在这里发布了问题,也联系了Nugget和Github的所有者,但从未得到回复。 - Ben Croughs
我有同样的问题:c - Jose Barbosa
8个回答

15
你需要的 NuGet 包是由 Microsoft 开发的 Microsoft.TestPlatform.ObjectModel,而不是 Christopher.Haws 开发的 Microsoft.VisualStudio.TestPlatform.ObjectModel 包。
请访问 https://www.nuget.org/packages/microsoft.testplatform.objectmodel/ 获取此 NuGet 包。
尽管它没有以这种方式命名,但 Microsoft 包中包含了 Microsoft.VisualStudio.TestPlatform.ObjectModel 程序集。我遇到了相同的错误,在安装了 Microsoft 包的 v11 版本后,它已经在构建服务器上修复了构建问题。

1
类似的问题:在VS 2017 V15.6.4中运行测试时出现相同的错误。添加nuget包“Microsoft.TestPlatform.ObjectModel”版本=“11.0.0”,测试再次成功。最新的稳定版本15.6.2不起作用。 - huha

7

有同样的问题,我能够安装最新版本:

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>

这个解决方案帮了我。我也遇到了同样的问题。 - Michal

4

3
在测试输出窗口中,我遇到了这样的错误...
[MSTest] [Discovery] [C:\ Repos \ Flomaster \ bin \ Debug \ ApiTest.UnitMaintenance.dll] 无法从程序集C:\ Repos \ Flomaster \ bin \ Debug \ ApiTest.UnitMaintenance.dll中发现测试。原因:类型“Microsoft.VisualStudio.TestPlatform.ObjectModel.Trait”在程序集“Microsoft.VisualStudio.TestPlatform.ObjectModel,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”中未标记为可序列化。
我通过清除所有的 obj 和 bin \ debug 文件夹来使我的测试运行器正常工作,但它又出现了,所以我深入搜索并找到只需搜索 Microsoft.VisualStudio.TestPlatform.ObjectModel.dll 并删除任何匹配文件即可让测试运行器正常工作。

1
清理解决方案对我有用,在我的情况下,可能是因为我意外安装了预览版本并将其降级到最新的稳定版本。 - Ariwibawa

3
在我升级.NET 5到7之后,无法加载 Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a。解决方法是在测试项目中直接引用 MSTest.TestFramework,因为我是通过一个 netstandard2.0 类库项目暂时性地引用它的。
<PackageReference Include="MSTest.TestFramework" Version="x.x.x" />

截至本文撰写时,版本为3.0.02。


2

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

Install-Package Microsoft.TestPlatform.ObjectModel -Version 11.0.0

但这还不够,为了确保编译服务器能够捕获程序集,我们将其作为部署项目添加到基础测试类中;

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

现在构建服务器又开始运行单元测试了 :-)

祝好


1

有同样的问题。通过在.proj文件中包含适配器定位器来解决:

<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.10" />

0
在错误地将 NUnit 3.0 的 NuGet 包添加到解决方案中的多个项目,然后将其删除后,我遇到了相同的错误。
引用没有完全被删除。我不得不手动打开每个 .csproj 文件并删除所有对先前已删除的 NuGet 包的引用。清理和重建后,错误消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接