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

Bla*_*ell 20 .net asp.net visual-studio vs-unit-testing-framework visual-studio-2017

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

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

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

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

bri*_*ins 44

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

您很可能正在处理私有访问者文件(.accessor),这些文件在VS2012已弃用(原始源为404).VS2010团队宣布他们不再致力于这些功能,这预示着这一点.

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

  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存根,然后删除内部代码.你只需要保留存根本身.


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

  • 为我工作。VS 2019。 (2认同)

Joh*_*n H 6

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