尝试在VS2017
中打开较旧的解决方案时,有一个旧的单元测试项目在构建时给我一个问题。
在构建此测试项目时,我始终收到以下错误:
我检查了该项目的引用,它似乎是在引用Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
。此外,没有代码错误。我怎么能找出它是否是它找不到的依赖项之一?
最佳答案
我最初使用VS2010开发的一个项目也遇到了类似的问题(带有附加消息The "BuildShadowTask" task failed unexpectedly
),并且花了最后几个小时来了解构建过程的另一个遗留方面。
您很有可能正在处理private accessor files(deprecated in VS2012),即original source(.accessor
)。在announcement from the VS2010 team中已预示了它们不再使用这些功能。
您也有可能只是在处理对错误版本的UnitTestFramework的错误引用,但是NuGet还原应该可以解决此问题。如果不是,请参见this GitHub thread以获得可能的修复(手动将引用更改为公用文件夹),或移动到新的MSTest.TestAdapter和MSTest.TestFramework包(请参见MSDN support thread)。
解决方案
A.编辑单元测试.csproj
并从Include
=> Shadow
更改项目None
引用:<Shadow Include="Test References\namespace.accessor" />
到<None Include="Test References\namespace.accessor" />
B.更好的是,只需从单元测试项目的.accessor
文件夹中删除所有Test References
文件。
理想情况下,您还可以重写单元测试以删除对私有(private)方法的引用,方法是重新架构以分离关注点,或者将属性更改为internal
,并在 InternalsVisibleToAttribute
中使用“friend”。
对于出于某些原因需要继续支持测试私有(private)方法的用户,同一篇文章为逻辑问题"What is available for me then?"
提供了以下建议:
进一步的阅读/帮助我将其组合在一起的资料: