我的Visual Studio缺少Microsoft.VisualStudio.QualityTools.UnitTestFramework。

10
我现在配置了一台新电脑。安装了VS 2010和所有必要的组件,并将我的运行项目放到了这台新电脑上。
编译项目时提示 VS 2010 找不到 "Microsoft.VisualStudio.QualityTools.UnitTestFramework" 的引用。
该程序集位于 Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies 目录下,但是 VS 无法找到它。
使用的项目是没有问题的,在我的旧机器上可以编译!
编辑: 编译时的错误信息如下: error CS0234: The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

我正在尝试通过再次卸载VS来解决这个问题。 - Ferhat
解决了:
  • 卸载了VS 2008和VS2010以及所有更新
  • 安装了完整的VS2008和VS2010
现在它可以工作了...该死!原因仍然未知!
- Ferhat
请查看此答案 https://stackoverflow.com/a/13602555/22015116,解决同样的问题。 - undefined
12个回答

4
我有同样的问题。
Old machine:
    Windows XP, 32 bit
    VS 2010 (32 bit)

New machine:
    Windows 7, 64 bit
    VS 2010 (32 bit)

我通过简单地删除对Microsoft... UnitTestFramework的引用,并添加新的引用来解决了这个问题,新的引用位于以下位置:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

我不需要更改目标.NET框架版本。


4
我们升级了一些2003年的代码,解决方法如下:
  1. 删除现有的错误引用
  2. 将项目从.Net 3.5更新到.Net 4(不是客户端版本)
  3. 从VS2010或VS2012添加新的引用

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

现有的“USING”语句无需更改。 "using Microsoft.VisualStudio.TestTools.UnitTesting;"


2

仍存在的问题:七年过去了

对我有效的解决方案(Visual Studio 2017,专业版)是从列表中删除引用(见下图),然后重新添加它。 在此输入图片描述


+1. 请确保在“添加引用”对话框中查看程序集->扩展列表。由于某种原因,我的测试项目在 csproj 文件中添加了一个奇怪的 <Choose><When Condition="...."> 部分。删除该程序集将其从中移除,并正常地将其添加回去。 - finlaybob

2

检查您的项目是否在混合解决方案配置中标记为X64平台(右键单击解决方案 -> Configuration Manager选项)。将测试项目的平台从X64更改为任意CPU后,程序集被识别并正常工作。


2

忘记将其标记为已解决:

我所做的:

卸载了VS 2008和VS2010以及所有更新 - 安装了完整的VS2008,完整的VS2010。现在它可以工作了!原因仍然未知!


我遇到了和你一样的问题,但我只安装了VS2010。我安装了VS2008,问题就解决了。 - Stephen Oberauer

1
我是一名有用的助手,可以为您翻译文本。
我遇到了同样的问题。原因是单元测试dll自动生成的配置文件,我没有注意到。app.cfg文件内容如下:
<?xml version="1.0"?>
    <configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity      name="Microsoft.VisualStudio.QualityTools.UnitTestFramework" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-10.1.0.0" newVersion="10.1.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
 <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
 </startup>

我刚刚删除了那个app.cfg文件,一切正常,没有做其他任何更改。

1

没有解决方案,只有一些提示:

// using Microsoft.VisualStudio.QualityTools.UnitTestFramework
// Path: %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

你还需要检查版本。目前有两个版本(10.1.0.0和10.0.0.0)。一个错误可能会导致此类错误。

所有Unity框架的版本都可以在Codeplex上找到。unity.codeplex.com


1
我已经安装了最新的Sp1,但版本仍为10.0。我该如何进行更新? - Ferhat
我认为这不是问题。我的旧机器也有10.0.*版本。 - Ferhat
我在VS2008的安装文件夹\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies中找到了这个dll。希望对你有帮助。 - Dennis

1

我遇到了同样的问题,但发现在引用中它被设置为GAC,所以我将其移除并放入BIN文件夹中。当它在一个服务器上时它是正常的,但那是因为它在那台机器上注册了,而不是其他机器。


1
我认为你的问题是,你有一个是在安装了VS2010 SP1的机器上创建的项目,而你正在使用未安装SP的VS2010的机器运行它。最近我不得不更换一台新机器,我的IS部门按照我的要求在新机器上安装了与我以前机器上一样的VS2010。

当我从源代码控制中下载我的代码时,突然间我无法运行单元测试,因为"Could not locate the assembly "Microsoft.VisualStudio.QualityTools.UnitTestFramework"

之后我想起我曾在旧机器上安装了SP1。所以我在新机器上安装了VS2010 SP1,神奇地问题消失了。

所以,请尝试下载和安装SP1。


1

编译时使用 .DotNet4 Framework 4 而不是 .DotNet4 Framework 4 Client Profile 也可能解决问题。


确认在项目设置中选择了“目标框架”=“Dotnet Framework 4 Client Profile”(默认设置),Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集将从“添加引用”对话框中过滤掉。顺便提一下,我觉得随着VS2010的出现,在同一句话中使用VisualStudio和QualityTools这两个术语是一个明显的不协调之处。 - Neutrino

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