【问题标题】:How do I get rid of "API restriction UnitTestFramework.dll already loaded" error?如何摆脱“API 限制 UnitTestFramework.dll 已加载”错误?
【发布时间】:2010-12-16 01:29:39
【问题描述】:

时不时会弹出如下错误:

C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\TeamTest\Microsoft.TeamTest.targets(14,5): error : API restriction: The assembly 'file:///C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll' has already loaded from a different location. It cannot be loaded from a new location within the same appdomain.

我该如何摆脱它?

【问题讨论】:

    标签: c# .net visual-studio tfs tfsbuild


    【解决方案1】:
    • 编辑 .csproj 文件
    • 删除 UnitTestFramework 引用末尾的 processorArchitecture=MSIL。

    变化:

    <reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    

    到:

    <reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    
    • 重启 Visual Studio

    【讨论】:

    • 这第一次对我有用,但从那以后,我在同一个测试项目中遇到了同样的问题。我检查了 .csproj 文件,并且处理器架构位肯定不存在,我认为它可能已经以某种方式放回了,但它没有。
    • Kevin:你能解释一下这背后的想法吗?我遇到了同样的问题,但看到了对正在发生的事情的相互矛盾的解释。
    • 这对我有用,但有同样的错误。尽管如此,有时直到我清理并重建项目后它才起作用。
    【解决方案2】:

    如果您在尝试在 TFS 构建服务器上运行测试时遇到此错误,那么您可能只需要更改 TFS 构建定义用于定位测试程序集的模式。 This post 描述了问题和解决方案。基本上 TFS 在两个不同的文件夹中找到相同的测试程序集并尝试将其包含两次。要解决这个问题:

    1. 打开团队资源管理器
    2. 展开树,直到您看到项目的构建
    3. 选择有问题的构建
    4. 右键单击 > 编辑构建定义
    5. 点击左侧边栏上的处理
    6. 展开'2。基本' > 自动化测试
    7. 点击编辑
    8. 更改测试程序集文件规范以删除模式中匹配的文件夹。例如。将 ****\test.dll** 更改为 *test*.dll

    通过从匹配模式中删除文件夹(即 \),它只会包含一次测试程序集,即使它在两个不同的文件夹中找到它也是如此。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签