0

我有一个大问题。我需要使用 VS 2012 开发 CUI 测试。我需要使用“旧”(版本 10.0.0.0)CUI-dll,例如“Microsoft.Visual Studio.TestTool.UITesting”。问题是,VS总是引用 11.0.0.0 版本。但是 .csprj 文件确实具有正确的条目,例如:

<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</When>

删除 11.0.0.0,清理解决方案并添加 10.0.0.0 版本没有帮助.. VS Studio 将始终添加 11.0.0.0 版本...

希望有人可以提供帮助:)

4

1 回答 1

0

首先,如果 Visual Studio 版本为 10.0,.csprj 文件中的条件语句将仅使用版本 10.0.0.0 引用。

您可以完全删除该部分并将引用强制为 10.0。这可能有效,也可能无效(VS 2012 试图对引用“聪明”并使用可用的最新版本)。

您还可以更改 .csproj<When>条件并删除对 .csproj 的任何引用VisualStudioVersion。同样,这可能会也可能不会奏效。

最后,在您的 app.config 中,您可以强制版本覆盖:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

当您尝试强制使用较旧的引用时,此方法也可能会失败。

无论您尝试哪种方法,您都需要确保备份现有文件,以便在不小心损坏项目时恢复它们。

您需要使用旧版本的原因是什么?通过迁移到这些 dll 的较新版本,您可能会有更好的选择。

于 2013-07-23T12:05:40.143 回答