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

Asp.net VS2017无法加载文件或程序集Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll或其依赖项之一,asp.net,.net,visual-studio,visual-studio-2017,vs-unit-testing-framework,Asp.net,.net,Visual Studio,Visual Studio 2017,Vs Unit Testing Framework,当试图在VS2017中打开旧的解决方案时,有一个旧的单元测试项目在构建时给了我一个问题 在构建此测试项目时,我一直遇到以下错误: 无法加载文件或程序集的file:///C:\Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'或其依赖项之一。系统找不到指定的文件 我检查了项目的引用,它似乎引用了Microsoft.VisualStudio.QualityTo

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

在构建此测试项目时,我一直遇到以下错误:

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

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

我在最初使用VS2010开发的项目中遇到了类似的问题(“BuildShadowTask”任务意外失败的附加消息,并花了最后几个小时学习构建过程的另一个遗留方面

您很有可能正在处理(
.accessor
),它们是()。这在一份声明中得到了预示,即他们不再研究这些特性

也有可能您只是在处理对错误版本的UnitTestFramework的错误引用,但NuGet还原应该可以解决这一问题。如果没有,请参阅以获取可能的修复(手动将ref更改为公用文件夹),或者移动到新的MSTest.TestAdapter和MSTest.TestFramework包(请参阅)

解决 A.编辑单元测试
.csproj
并将项目
包括
参考从
阴影中更改为
=>

更好的是,只需从单元测试项目的
测试参考
文件夹中删除所有
.accessor
文件

理想情况下,您还可以重写单元测试以删除对私有方法的引用,方法是重新设计以分离关注点,或者将属性更改为
internal
,并使用“friend”和


对于那些出于某种原因需要继续支持私有方法测试的人,同一篇文章针对逻辑问题
“那么我可以使用什么?”
,提供了以下建议:

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

  • 使用Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject类帮助访问代码中的内部和私有API。这可以在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll程序集中找到
  • 创建一个反射框架,该框架能够反射代码以访问内部或私有API
  • 如果您试图访问的代码是内部的,那么您可以使用InternalsVisibleToAttribute访问您的API,这样您的测试代码就可以访问内部API
  • 然而,对于lanugage团队添加的新特性,代码生成并没有任何好的替代品。您可以创建TestMethod存根,然后删除内部代码。您只需要保留存根本身


    进一步的阅读/资料帮助我把这一点拼凑在一起:

    • 访问者的数量
    • 解释如何针对构建服务器解决此问题
    • 讨论访问器的用途、实现和解决方法。开始时大约向下1/3

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

    这与Visual studio Enterprise 2015有关,添加新负载测试失败:并将其替换为“找不到程序集”Microsoft.VisualStudio.QualityTools.LoadTest,版本=14.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”

    由于公共程序集中安装的程序集显示为GAC中缺少的版本10.0.0.0


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

    为了更好的推理,系统装配路径和项目路径需要更多的细节 DLL路径 ……程序文件(x86)\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblys\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

    .CSProj参考版本

    尝试完全卸载Visual Studio 2017(不修复)。然后下载最新版本并安装。请记住检查是否已将MSBuild添加到安装文件中。请记住删除文档中的文件夹:文档\Visual Studio 2017。在我的例子中,这个简单的解决方案修复了所有错误

    那么,
    C:\Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll“
    确实存在吗?想想看,为什么一开始它就在那里?删除引用并使用引用管理器的“程序集”选项卡将其添加回。不要浏览到磁盘上的DLL。@威尔,我也这么想。。。它真的试图在我的项目目录中找到它吗?我已经尝试过删除它,然后转到“引用管理器”>“扩展”,然后有大约5个重复的Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll可供参考。当引用时,我总是得到相同的错误。。。不确定到底是什么让项目在C:\Projects\MyProj中查找。。。要查找dll。。。当我转到引用>程序集时,我看不到它。。只有分机有。是的,分机。古怪的我看到正在使用我的测试的是C:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblys\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll。您知道,您可以随时创建新的测试项目,手动移动类,并丢弃已损坏的项目文件。。