C#引用同一组件的两个不同版本

C#引用同一组件的两个不同版本,c#,.net,dll,C#,.net,Dll,我需要在我的库项目中引用同一个库(Coherence.NET)的两个版本,并同时使用它们,因此我重命名了dll,并在项目中通过别名引用了它们,但是当我尝试编译库时,我收到此警告 warning MSB3243: No way to resolve conflict between "Coherence, Version=12.1.2.0, Culture=neutral, PublicKeyToken=0ada89708fdf1f9a" and "Coherence, Version=3.3.0

我需要在我的库项目中引用同一个库(Coherence.NET)的两个版本,并同时使用它们,因此我重命名了dll,并在项目中通过别名引用了它们,但是当我尝试编译库时,我收到此警告

warning MSB3243: No way to resolve conflict between "Coherence, Version=12.1.2.0, Culture=neutral, PublicKeyToken=0ada89708fdf1f9a" and "Coherence, Version=3.3.0.2, Culture=neutral, PublicKeyToken=0ada89708fdf1f9a". Choosing "Coherence, Version=12.1.2.0, Culture=neutral, PublicKeyToken=0ada89708fdf1f9a" arbitrarily
当我尝试注册我的库(它需要使用RegAsm.exe注册)时,我得到了这个erorr

error MSB3217: Cannot register assembly "C:\Program Files\******.dll". Could not load file or assembly 'Coherence, Version=3.3.0.2, Culture=neutral, PublicKeyToken=0ada89708fdf1f9a' or one of its dependencies. The system cannot find the file specified
我提到的两个程序集dll是Coherence.v3.3.dll和Coherence.v12.1.dll

我曾尝试将其添加到我的库的App.config中,但没有解决问题,因为我仍然会遇到相同的错误

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Coherence" publicKeyToken="0ada89708fdf1f9a" culture="neutral" />
    <codeBase version="3.3.0.2" href="Coherence.v3.3.dll"/>
    <codeBase version="12.1.2.0" href="Coherence.v12.1.dll"/>
  </dependentAssembly>
</assemblyBinding>
 </runtime>


作为变体,您可以为每个库版本创建2个“代理”程序集。

编辑项目文件
.csproj
,并确保
HintPath
存在且
SpecificVersion=True

<Reference Include="Coherence, Version=12.1.2.0, ...">
  <HintPath>..\references\******.dll</HintPath>
  <SpecificVersion>True</SpecificVersion>
</Reference>

..\引用\******.dll
符合事实的

之后,保存文件并再次重建它。

执行此操作时,会显示警告MSB3245:无法解析此引用。找不到程序集“Coherence.v12.1,Version=12.1.2.0,Culture=neutral,PublicKeyToken=0ada89708fdf1f9a,processorArchitecture=MSIL”。对于警告
MSB3245
,你可以试试C.Evenhuis在这个问题上的答案,他的建议并没有改变这样一个事实:当我改为Specific version=true时,连贯性引用旁边会出现黄色图标,它仍然说它无法解决可能重复的