2013-07-22 78 views
0

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

<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

首先,在.csprj文件中的条件语句将只打算使用的版本10.0.0.0引用如果Visual Studio版本是10.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的更新版本,可能会有更好的选择。