版本控制,如何使用唯一的publicKeyTokens构建各种程序集版本?

时间:2016-02-05 10:50:43

标签: c# .net msbuild

我在遗留项目上工作,必须支持相同dll的8个不同版本。我可以访问库源代码,所以我可以自己构建这些dll。

dll是强签名的,每个都有自己的版本号3.6.0.0,3.7.0.1等。

但是,每个dll都具有相同的publicKeyToken。这很令人沮丧,因为我收到了构建警告:

  

无法解决“Test.Core,Version = 9.0.0.0之间的冲突,   Culture = neutral,PublicKeyToken = c6699d902bca3abc“和”Test.Core,   Version = 7.4.0.0,Culture = neutral,PublicKeyToken = c6699d902bca3abc“。   选择“Test.Core,Version = 9.0.0.0,Culture = neutral,   PublicKeyToken = c6699d902bca3abc“任意。

有任何解决此问题的建议吗?如何获得唯一的密钥令牌?

2 个答案:

答案 0 :(得分:0)

好的,经过大量搜索和尝试各种配置后,我必须得出结论,这无法以任何方式解决。

甚至无法取消构建警告:s msdn

答案 1 :(得分:0)

可以使用条件设置的自定义配置。考虑一种设计,其中每个配置都引用不同的输出路径。

  <ItemGroup Condition="'$(Configuration)'=='Debug_TestCore740'">
    <Reference Include="Test.Core, Version=7.4.0.0, Culture=neutral, PublicKeyToken=c6699d902bca3abc, processorArchitecture=MSIL" />
    <HintPath>..\Test.Core\$(Configuration)\Test.Core.dll</HintPath>
  </ItemGroup>
  <ItemGroup Condition="'$(Configuration)'=='Debug_TestCore900'">
    <Reference Include="Test.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=c6699d902bca3abc, processorArchitecture=MSIL" />
    <HintPath>..\Test.Core\$(Configuration)\Test.Core.dll</HintPath>
  </ItemGroup>