“VisualStudio”类型或命名空间在“Microsoft”命名空间中不存在。

45
我从这里看到,命名空间Visual Studio应该存在于命名空间Microsoft中,但是我收到了这个错误信息并且我的测试都无法正常工作!

类型或命名空间名“VisualStudio”在命名空间“Microsoft”中不存在(是否缺少程序集引用?)

我使用的是更新至Windows 8.1的Visual Studio 2012。


1
检查目标 .net fw。即 .Net 4 CLIENT framework 和 .Net 4.0 FULL framework。同时确保正确的单元测试 dll 版本存在。 - Spock
9个回答

27

在尝试在 TFS 中构建项目时,我遇到了这个错误。以下步骤可以解决这个问题:

  • 删除对 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的引用
  • 添加 nuget MSTest.TestFramework
  • 添加 nuget MSTest.TestAdapter(可选,但需要在 Visual Studio 中运行测试)

上述步骤会导致我的 .csproj 文件中的此元素被移除:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />

相反,这两个被添加了进来:

    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
    </Reference>

将 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 复制到项目的根文件夹中。当您稍后在控制台或其他方式中构建测试项目时,请将其复制回 debug\bin。 如果项目没有引用 Microsoft.VisualStudio.QualityTools.UnitTestFramework,我曾经在从 Visual Studio UI 启动测试时遇到问题 -> 故障。 - Zbigniew Krumins
1
我还将整个项目更新为SDK样式类型。然后我删除了引用并用PackageReferences替换它们(在SDK样式项目中添加或删除引用当然更容易,因为您不必卸载和加载它们以编辑XML)。然后它对我起作用了(在TFS中)。 - Martini Bianco

9

如果你使用的是VS 2017,只需不将原始项目和测试项目放在同一文件夹中即可解决冲突。


6

命名空间Microsoft.VisualStudio...定义在不属于Visual Studio标准安装的程序集中。仅当您安装了Visual Studio SDK时才可用。

SDK和包含的命名空间的MSDN参考文献可以在这里找到。

安装SDK后,根据这里的描述向您的项目添加对所需程序集的引用。

编辑:请还要检查您的Visual Studio版本。在您发布的MSDN链接中,它说:

如果您有特殊要求,可以定制Visual Studio Ultimate或Visual Studio Premium的某些方面,以扩展现有功能或添加新功能。API参考提供关于类的信息,以帮助您进行自定义。

如果您有其中一种版本,请打开您的单元测试项目,右键单击“引用” ->选择“添加引用” ->在左上角点击“程序集”,并在列表中搜索“Microsoft.VisualStudio.TestTools.UnitTesting”(它可能位于“Framework”或“Extensions”部分,您也可以在左侧选择)。 您不需要知道dll的实际位置。

谢谢Tobias,我已经下载并安装了VisualStudio SDK,但是如果我不知道.dll的位置,我该如何引用它?我正在搜索“Microsoft.VisualStudio.TestTools.UnitTesting”,但没有找到任何内容。另外,请注意您的MSDN参考链接不包括我要找的程序集..是否所有东西都已更改? - J86
嗯...我进一步研究了一下,显然我忽略了什么。请问您使用的是哪个版本的Visual Studio 2012(专业版、高级版、终极版、Express版)?似乎您提到的程序集仅在终极版和高级版中可用。 - Tobias Breuer
我正在使用VS 2012专业版。您是说因为我没有VS 2012终极版或高级版,所以我不能使用特定的UnitTesting库吗?:( - J86
2
抱歉,Tobias,那不是它。 :) - J86
下载链接被禁止。 - abc123

2

对于VS 2017,我需要在属性中更改目标框架


1
我也在使用VS 2017,我的所有目标框架都设置为“.NET Framework 4.6.2”,但我仍然遇到了这个错误,并且无法在任何地方找到我需要的dll文件。 - Thought
1
有趣的是,这个程序集的MSDN文档在Visual Studio 2013完全停止了更新。它并没有说它不再受支持,但他们指出它包含了旧版本的文档。我还需要进一步调查这个问题... - Thought
我的问题是代码是通过SpecFlow生成的,所以我不知道如何快速解决这个问题(即,在不重写大部分SpecFlow代码的情况下)。 - Thought
3
答案没有提供任何具体的设置来更改目标“to”的位置或原因。因此,它对我或Thought似乎不起作用。 - T.S
改变成什么了? - StayOnTarget

2

好的,我找到了问题所在。我把所有的解决方案文件放在了一个不同于通常默认位置的Dropbox文件夹中。

我希望能够从多台计算机上处理解决方案,但显然这是问题的原因。

将整个解决方案移动到默认的My Documents/VS 2012/Projects/位置,问题就解决了!

简而言之,如果你想让事情顺利进行,请将解决方案文件放在通常的位置,除非你是一个高级用户并且知道自己在做什么(我不是)。


我已经将项目移动到其位置Documents/VS 2010/Projects/,但仍然出现以下错误 错误1:命名空间'Microsoft'中不存在类型或命名空间名称“VisualStudio”(是否缺少程序集引用?) - Waqas
你在使用VS2010吗?如果没有,它需要放到正确的文件夹中。 - J86
我正在使用 VS 2010,并将其放置在“文档/vs2010/projects/”中,但仍然出现错误。 - Waqas
你没有通过网络共享你的文档文件夹,对吧? - J86
1
不,我没有分享它,我猜这是一些 DLL 问题。 - Waqas
2
“……希望我可以从多台电脑上处理解决方案……”这就是源代码控制的作用。 - Fabio S.

1

1
在我的情况下,我有一个无效的私有软件包源。因此,我根本无法安装任何软件包(当然)。删除无效的软件包源也使得 Visual Studio 能够正确地安装软件包。

0

将Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll复制到项目的根文件夹中。当您稍后在控制台或其他情况下构建测试项目时,请将其复制回debug\bin。 如果项目没有对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用,我曾经在从Visual Studio UI启动测试时遇到问题 -> 故障。


0

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