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

布莱克·里维尔(Blake Rivell):

尝试在其中打开较旧的解决方案时,VS2017有一个旧的单元测试项目在构建时给我带来了问题。

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

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

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

Brichins:

The "BuildShadowTask" task failed unexpectedly最初用VS2010开发的一个项目也遇到了类似的问题(带有附加消息),并且花了最后几个小时来了解构建过程的另一个遗留方面。

您很有可能正在处理私有访问者文件.accessor),该文件在VS2012已弃用原始来源)。VS2010团队宣布不再使用这些功能,从而预示了这一点

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

解决方案

A.编辑单元测试.csproj和更改的项目Include从引用Shadow=> None<Shadow Include="Test References\namespace.accessor" />
<None Include="Test References\namespace.accessor" />

B.更好的是,只需.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存根,然后删除内部代码。您只需要保留存根本身即可。


进一步的阅读/资料帮助我将其组合在一起:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章