我有一个大问题。我需要使用VS 2012开发CUI测试。我需要使用" old" (版本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版本...
希望有人可以提供帮助:)
答案 0 :(得分:0)
首先,如果Visual Studio版本为10.0,则.csprj文件中的条件语句将仅使用版本10.0.0.0引用。
您可以完全删除该部分并强制引用10.0。这可能会也可能不会起作用(VS 2012尝试对引用“智能”并使用可用的最新版本)。
您还可以更改.csproj <When>
条件并删除对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的较新版本,可能有更好的选择。