VS2017无法加载文件或程序集Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll或其依赖项之一

问题描述 投票:15回答:3

当试图在VS2017中打开旧的解决方案时,有一个旧的单元测试项目在构建时给我一个问题。

构建此测试项目时,我不断收到以下错误:

无法加载文件或程序集'file:/// C:\ Projects \ MyProj \ Test \ DAL \ UnitTestProj \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'或其依赖项之一。该系统找不到指定的文件。

我检查了项目的引用,它似乎引用了Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll。此外,没有代码错误。我怎么能弄清楚它是否是它无法找到的依赖项之一?

asp.net .net visual-studio visual-studio-2017 vs-unit-testing-framework
3个回答
40
投票

我有一个类似的问题(附加消息The "BuildShadowTask" task failed unexpectedly)与最初使用VS2010开发的项目,并且花了最后几个小时来学习构建过程的另一个传统方面。

很有可能你正在处理private accessor files.accessor),这是deprecated in VS2012original source是404)。这在announcement from the VS2010 team预示他们不再研究这些功能。

你也有可能只是处理错误的引用错误版本的UnitTestFramework,但NuGet恢复应该解决这个问题。如果没有,请参阅this GitHub thread以获取可能的修复(手动将ref更改为公用文件夹),或移至新的MSTest.TestAdapter和MSTest.TestFramework包(请参阅MSDN support thread)。

  1. 编辑单元测试.csproj并将项目引用从<Shadow Include="Test References\namespace.accessor" />更改为<None Include="Test References\namespace.accessor" />Shadow => None)。
  2. 更好的是,只需从单元测试项目的.accessor文件夹中删除所有Test References文件。

理想情况下,您还需要重写单元测试以删除对私有方法的引用,方法是重新构建单独的关注点或将属性更改为internal并将“friend”与InternalsVisibleToAttribute一起使用。


对于那些因某些原因需要继续支持私有方法测试的人,同一篇文章对逻辑问题"What is available for me then?"提出了以下建议:

对于那些希望继续测试内部API的人,您有三种选择:

  1. 使用Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject类来帮助访问代码中的内部和私有API。这可以在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll程序集中找到。
  2. 创建一个反射框架,该框架能够反映您的代码以访问内部或私有API。
  3. 如果您尝试访问的代码是内部代码,则可以使用InternalsVisibleToAttribute访问API,以便您的测试代码可以访问内部API。

但是,对于由语言团队添加的新功能而言,代码生成没有任何良好的替代品。您可以创建TestMethod存根,然后删除内部代码。你只需要保留存根本身。


进一步阅读/来源帮我拼凑了这些:


5
投票

右键单击项目引用文件夹。添加引用>装配>扩展。检查Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1,并取消选中任何旧版本。


0
投票

这与Visual Studio Enterprise 2015有关,添加新的负载测试失败:并吐出“无法找到程序集”Microsoft.VisualStudio.QualityTools.LoadTest,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“

由于在公共程序集中安装的程序集显示为在GAC中遗漏的版本10.0.0.0,

GAC只有10.1.0.0。一旦GAC使用10.0.0.0更新并重新启动VS 2015.应该解决类似的问题。

有关更好推理的更多细节,系统程序集路径和项目路径DLL路径...... \ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

.CSProj参考版

© www.soinside.com 2019 - 2024. All rights reserved.