在VS2010中,Microsoft.VisualStudio.TestTools.UnitTesting命名空间在哪里?

45
我将一个包含一些单元测试项目的VS2008解决方案转换为了VS2010。转换后,我尝试编译解决方案,但是出现以下错误:
“Microsoft”命名空间中不存在“VisualStudio”类型或命名空间名称(是否缺少程序集引用?)
无法找到命名空间声明using Microsoft.VisualStudio.TestTools.UnitTesting;. 此外,当我尝试添加新项目引用时,我无法找到Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集。
有人知道我错在哪里吗?

1
有人知道它是否在Nuget上吗? - Colonel Panic
6个回答

71

这个叫做Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

你可以在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll找到它。


1
谢谢SLaks!那是正确的。我从Codeplex下载了SQLConfigurationSource项目并尝试编译它。它失败了,因为微软忘记更新他们的文档(再次)以适应新的库。赞扬! - user600145
也:c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll - Four

22
我也遇到了同样的问题,而且也是涉及到 Microsoft.Data.Schema 库。答案是正确的,因为这些库位于计算机上并且在 VS 10.0 目录中。
问题(至少在我这里)是解决方案从 VS2008 转换过来,转换工具将项目定位为 .NET 3.5。由于 10.0 库需要 .NET 4.0,因此编译器无法识别它们。
解决方案是要么回退到使用 VS2008,以便正确地解决这些问题;要么将项目切换为编译 .NET 4.0,以便使用可用的库。

我已经通过相同的方法解决了这个问题。对于这个答案点赞。 - CARLOS LOTH
只是想为任何找到此答案的人添加一条注释,因为遇到类似问题时,请尝试重新启动 Visual Studio,有时它可能只是混乱了。 - Carl Onager
3
请确保“Specific version”设置为False,否则将无法获取.NET 4.0 dll文件。 - Sune Rievers

6

针对 Visual Studio 2015 用户:

我遇到了类似的问题,但是是在使用Visual Studio 2015将Prism WPF应用StockTraderRI Unity版本从Prism 2.2升级到5.0时。5.0版本使用MEF,而我需要Unity版本。

我使用了以下步骤:

  1. 删除程序集引用

enter image description here

  1. 重新添加它

enter image description here

  1. 选择 程序集 | 扩展

enter image description here

  1. 在搜索框中输入 Microsoft.VisualStudio.QualityTools.UnitTestFramework

enter image description here

我需要对多个测试项目执行此操作,最快的重复添加方式是只需选择 程序集 | 最近使用即可

enter image description here


4

对于VSTS 2010,请确保您在参考文献中包含以下内容:

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework

  • Microsoft.VisualStudio.QualityTools.WebTestFramework (如果您正在进行Web测试)


0
请前往下载Visual Studio 2010 SP1并安装。安装完成后,您可以将测试项目的框架从默认的4.0版本更改为3.5或其他版本。只需将框架更改为您想要测试的项目的框架版本即可。现在,代码将会和谐地结合在一起,您就可以运行测试了。

我有一种感觉,Syed从未尝试过他的建议。在Visual Studio 2010 SP1中,将测试项目的目标框架从4.0转换为3.5是不可能的,除非进行重大的修改。你必须让VS认为它不是一个测试项目,改变目标框架,然后再将项目改回测试项目。请参见此处:[unable-to-change-target-framework-version-to-3-5-because-visual-studio-thinks-it-is-a-test-project](http://connect.microsoft.com/VisualStudio/feedback/details/553106/unable-to-change-target-framework-version-to-3-5-because-visual-stud - user916948

0
+Erik Brown说得对,问题在于VS2010支持将项目定位到.NET 3.5,但不支持在.NET 3.5项目中进行单元测试。
然而,由于在生产环境中代码将在框架下运行,因此测试代码的可行性很重要。使其可行的一种简单方法是改用NUnit,并使用Resharper从Visual Studio或NUnit测试运行器中运行测试。 NUnit可以使用一组二进制文件与.NET v2.x-v4.x一起使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接