如何找到缺失的 "Microsoft.VisualStudio.TestTools.UnitTesting" dll 文件?

166

我在我的C# Visual Studio项目中遇到了以下错误:

The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

我也尝试查找“microsoft.dll”文件,但没有找到任何参考资料。 我是在搜索错误的DLL吗?

using Microsoft.VisualStudio.TestTools.UnitTesting;  
using Kya.MsFx.Services.Swiper;

namespace Kya.MsFx.Devices.Swiper.Test
{
[TestClass]
public class SwiperWindowTest
{

    private SwiperWebServiceHost m_SwiperWS = null;
    /// <summary>
    ///     start web service on a separate thread, so tests 
    ///     can be executed withut blocking the application thread
    /// </summary>
    [ClassInitialize]
    public void SetupSwiperTests() {

        m_SwiperWS = SwiperWebServiceHost.StartService();

    }

    /// <summary>
    /// Stop service started during class initialize and kill the thread
    /// </summary>
    [ClassCleanup]
    public void CleanupSwiperTests() {
        m_SwiperWS.Stop();
    }


    /// <summary>
    ///   simulate init, swipe, clear operations
    /// </summary>
    [TestMethod]
    public void TestSwiperService()
    {
        MessageBox.Show("test");
    }
}
}

1
在添加了对 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 的程序集引用后,您是否仍然遇到完全相同的错误? - Joachim Isaksson
13个回答

162

你需要添加对应的参考文献

Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 

它可以在C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\目录中找到(适用于VS2010专业版及以上; .NET Framework 4.0)。

或右键单击您的项目,选择:添加引用... > .NET: 或点击添加引用... > .NET:


2
为什么这个被接受了?评论似乎表明它没有帮助。有人能详细说明一下吗? - sirdank
1
@sirdank 你应该意识到只有提问者才能接受答案作为解决方案,是吧?如果这个答案对提问者没有帮助,他就不会接受它。 - Agent007
6
我知道。然而,原帖留下评论表明它没有起作用,这让我认为需要做更多的事情。找出需要做的其他事情后,不留下描述这些事情的评论似乎没什么帮助。 - sirdank
8
刚刚遇到了这个问题,这个答案解决了我的问题。有没有人能够解释一下为什么会出现这种情况?为什么命名空间是 Microsoft.VisualStudio.TestTools.UnitTesting 而程序集是 Microsoft.VisualStudio.QualityTools.UnitTestFramework?为什么它们不能都叫同一个名字? - Alan Thomas
@sirdank 在解决引用问题时,必须先构建解决方案,即使失败也要尝试。至少在VS 2017中是这样的。 - Oyvind Andersson
显示剩余3条评论

128

我知道这个已经有些老了,在我的Google搜索结果中找到的。我需要在NuGet上引用这些包:

在这里输入图片描述


3
在我的情况下(使用VS2019),我需要升级这些软件包,然后问题就解决了。谢谢! - RJFalconer
2
对我来说,添加MSTest.TestFramework的PackageReference就解决了问题。我不需要引用TestAdapter。(我猜后者是为了工具集成。例如:自动发现测试。)但是没错,这正是我需要的答案。谢谢! - Michael
2
你需要确保这些包是相同的版本。如果你升级其中一个而不升级另一个,你的测试将无法工作。为什么这些是两个单独的包,只有上帝和比尔·盖茨才能回答... - Liam
3
需要将此标记为答案。 - Nagendra
2
在VS2022中也有个奇怪的球,但它运行得很好。 - Marcelo Scofano Diniz
为什么这两个独立的软件包只有上帝和比尔·盖茨才能回答…… A) 比尔·盖茨已经很久没有管理微软了,B) TestAdapter NuGet 软件包是用于与适当的测试运行器(如 VSTest.console)集成的,但不适用于已弃用的 MSTest.console。 - enorl76

19

3
请给我下载链接。 - Amit Pal
@AmitPal 你用的是哪个版本的Visual Studio?它应该包含在大多数版本中。 - Joachim Isaksson
Visual Studio 2010和.NET 4.0 - Amit Pal
@AmitPal,请查看我对于这个问题的答案,里面必须有DLL路径。 - Agent007
5
Visual Studio 2010 Express没有该DLL文件,因此无法添加以使单元测试工作(您必须使用第三方测试工具,如nUnit)。如果您正在使用专业版或更高版本,请参阅agent007的回答。 - Joachim Isaksson

13
为了解决这个问题,我需要执行以下步骤:
  1. 以管理员权限启动 Visual Studio 安装程序
  2. 如果它提示你更新 Visual Studio,请在继续之前进行更新
  3. 弹出窗口时,点击修改现有安装
  4. 在顶部的“Individual components”选项卡中点击
    “Debugging and testing”
    部分
  5. 滚动到下面的“Web performance and load testing tools”部分
  6. 勾选“Web performance and load testing tools”旁边的方框
  7. 点击对话框右下角的“Modify”按钮以安装缺失的 DLL 文件
一旦 DLL 文件被安装,你可以按照 Agent007 在他的回答中提到的方法添加引用。

1
“Web性能和负载测试工具”不再出现。您建议我们选择什么? - Shafiq Jetha
@ShafiqJetha,我仍然看到“Web性能和负载测试工具”的选项。我正在使用Visual Studio Enterprise 2017 - 15.8.9。你用的是哪个版本?看起来自我上面写帖子以来,微软已经稍微改变了安装程序的界面。当我启动Visual Studio Installer(以管理员身份运行),我点击“更新”和“启动”按钮右侧的“更多”按钮,然后选择“修改”,然后继续执行我在帖子中列出的步骤4。 - S. Hooley
我正在使用Visual Studio 2017的Build Tools安装程序,这可能可以解释它。 - Shafiq Jetha
@ShafiqJetha 你最终用了什么? - Vin Shahrdar
@VinShahrdar,老实说,我记不清了;这已经是很久以前的事了。我想我们可能是通过使用其他人的NuGet包来获取所需的DLL文件来解决了这个问题,或者我们将DLL文件保存到了代码库中。我真的记不清了,抱歉。 - Shafiq Jetha
1
这是正确的答案。 - Matt M

10
如果您正在使用Visual Studio 2017 Community版本,则路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\v2.0
所需的DLL文件位于此处:Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
显然,对于Visual Studio 2010 Professional版本,它位于C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\目录中,但请注意,10.0将更改以对应发行年份,即VS 2013是12.0版本,VS 2015是14.0版本,而VS 2017是15.0版本。(不支持VS Express,并且需要通过NuGet包管理器安装NUnit NuGet包。)
您可以进入“引用”右键单击,选择“添加引用,浏览”。导航到路径,然后双击该文件。
接下来,您需要在单元测试类的顶部添加一个using语句: using Microsoft.VisualStudio.TestTools.UnitTesting;

1
浏览指的是底部的“浏览”按钮,而不是左侧的“浏览文件夹”。 - Alan Baljeu
@AlanBaljeu 非常正确。 - vapcguy

10

还有一个很不错的nuget包。它会将dll拉到您的packages文件夹中。您需要手动添加对dll的引用。

注意:此软件包不是官方Microsoft软件包。


1
Nuget包在使用VS2013创建的.NET 4.0项目中安装失败。 版本的唯一选项是11.0.50727.1。 - WebComer
1
有人能否说一下这个NuGet包是否真的是微软拥有的?它似乎是一个包含微软程序集的个人NuGet包。 - BozoJoe
这里写着它是针对VS 2012的,同时也写着“所有者已将此软件包取消列出”。 - Aaron Franke

0

使用Visual Studio 2019运行.net core 3.1项目时,您需要安装最新的测试框架以解决错误。

最简单的方法是将浏览器悬停在[测试]注释(用红色下划线标出)上,并选择建议的修复。所需的一个是“搜索并安装最新的测试框架”。


0
如果您因为VSTS构建作业失败而来到这里,请确保您使用的是至少版本2.*的nuget任务来恢复您的软件包。

你知道为什么需要版本2.*吗?我们正在使用TFS 2017并遇到了这个错误。 - DylanSp
我刚把代码从QA提升到UAT,现在正在同一台电脑上,在几乎相同的解决方案中的同一父文件夹中测试相同的单元测试。但是,没有发现任何单元测试...我已经厌倦了微软近年来所创建的路径问题。 - Christian

0
在移动项目并删除其packages文件夹后,我遇到了这个问题。 Nuget显示已安装MSTest.TestAdapter和MSTest.TestFramework v1.3.2。 解决方法似乎是以管理员身份打开VS并构建。 之后,我能够重新打开并构建而无需管理员权限。

0

例如,对于Visual Studio 2013,我将引用此程序集:

Microsoft.VisualStudio.Shell.14.0.dll

你可以在这里找到它:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\BugAid Software\BugAid\1.0

并且不要忘记实现:

using Microsoft.VisualStudio;


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