在构建单元测试项目时,VS 2010无法找到用于测试的引用程序集

时间:2010-07-20 18:40:02

标签: unit-testing visual-studio-2010 assembly-resolution

我正在开发一个单元测试项目(比方说XXX.UnitTest)来测试我的解决方案中另一个项目(XXX)中的ViewModels。我可以添加引用,但是当我构建时,错误表明它找不到相同的项目(XXX)

  

错误42无法加载文件或   程序集'XXX,版本= 1.0.2.66,   Culture = neutral,PublicKeyToken = null'   或其中一个依赖项。系统   找不到该文件   指定。 XXX.UnitTest

  • 我在我的解决方案中对所有项目进行了干净的重建。
  • 我验证了那个版本号(1.0.2.66)的程序集确实存在于我引用的路径中。
  • 我删除并重新添加了作为项目和浏览选项卡的引用。
  • 我确保未在csproj文件中指定版本号。
  • 我使用Dependency Walker验证了引用的程序集。
  • 我确认这两个项目都是针对x86平台的。 (正如Tips to help debug "Could not load file or assembly X or one of its dependencies"所述)

有谁知道还有什么可能导致这个问题?

3 个答案:

答案 0 :(得分:1)

上周我遇到了同样的问题。事实证明我的解决方案和项目都在网络资源上。如果我将解决方案移动到本地驱动器,问题就会消失。

  • 无论我使用映射驱动器还是UNC路径,都会出现此问题。

  • 即使使用“完全信任”的代码访问安全策略,也会出现此问题。

  • 我认为问题出现在 Windows XP 计算机上,而不是 Windows 7 计算机上,但尚未经过测试或验证。

  • 我认为它与分享权限有关。

    • 如果我尝试使用“脱机文件夹”作为网络资源,我会“访问被拒绝”。

    -

  • 设置NTFS权限无效。

  • 将用户添加到管理员组无效。

  • 我没有测试可移动本地驱动器是否存在问题。

解决方法

将解决方案和项目移至本地硬盘。

注释

我认为这是 Visual Studio 2010 中的一个错误。

答案 1 :(得分:1)

我在搜索答案时遇到了这篇文章。这是解决方案。在C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE中的QTAgent32.exe和devenv.exe的配置文件中,将以下元素添加到该部分:

<runtime>
    <loadFromRemoteSources enabled="true" /> 
</runtime>

这可以添加到所有VS2010工具的机器配置文件(C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config)中。务必以管理员身份运行记事本以允许machine.config保存。

有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/dd409252%28VS.100%29.aspx

答案 2 :(得分:0)

我有同样的问题。我在Windows Server 2003上运行VS 2010;两者都在Mac上的VM中运行。我的VS项目位于mac home文件夹(〜/)中,从Windows端映射为Z:\。在构建时,VS studio会生成一个错误,指出它无法找到UnitTests.dll或其依赖项之一。我在一个小测试项目中得到了同样的错误。如果我将项目移动到Windows C:\驱动器,则dll引用将解析并且单元测试可以正常工作。我试图添加Blanthor提到的参考文献,但无法让它工作。