F#中的“考虑使用app.config重新映射程序集…”警告

26
安装了VS11之后,我开始遇到以下错误:

考虑将程序集“FSharp.Core,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的重新映射从版本“2.0.0.0” [C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v2.0 \ FSharp.Core.dll] 到版本“4.0.0.0” [C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ FSharp \ 2.0 \ Runtime \ v4.0 \ FSharp.Core.dll] 来解决冲突并摆脱警告。 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1490,5):警告MSB3247:发现同一依赖项程序集的不同版本之间存在冲突。

我该怎么做?我不知道如何进行这样的重新映射。
3个回答

23

以下是我认为所提出的示例 app.config,可以实现建议的功能。 但是,你的项目中有什么,以及有哪些 FSharp.Core 引用? 你是针对 .Net 4.5 还是 4.0 还是其他版本? 这个项目引用了一些旧版的 F# 库吗? 这通常是因为两个项目引用了不同版本的 FSharp.Core.dll,例如检查 .fsproj 文件中的 <Reference> 节点。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
          <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a"
                            culture="neutral"/>
<!--      <bindingRedirect oldVersion="0.0.0.0-2.9.9.9" newVersion="4.3.0.0"/>  -->
          <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

你有什么其他建议吗? - Oldrich Svec
经过多次尝试和错误,我发现问题是由于Fsharp.PowerPack + 编译成exe引起的。当我在VS10和VS11中创建一个新解决方案并插入对powerpack的引用时,我会收到警告。有没有什么办法可以解决powerpack的问题? - Oldrich Svec
您需要从源代码重新编译PowerPack,或者使用绑定重定向;目前PowerPack二进制文件已经硬编码到FSCore的2.0.0.0版本。 - Brian
PowerPack的建议-您从Nuget下载的版本有很多种,包括4.0。 - Robert Jeppesen
3
这个工具帮助我诊断了一个类似的问题:http://mikehadlow.blogspot.com/2011/02/asmspy-little-tool-to-help-fix-assembly.html - mcliedtk
显示剩余3条评论

3

与 Json.Net 相关的同样错误

在项目文件中,我有以下内容:

<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>

并且

<ItemGroup>
   <Reference Include="Newtonsoft.Json">
      <HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
   </Reference>
</ItemGroup>

删除旧的解决了问题。

0
如果您已经成功完成升级,那么不应该出现这样的问题...除非您正在使用某些第三方库,该库使用旧版FSharp.Core。在我的情况下,是FSharpPowerPack在这样做。
因此,您必须首先更新该库以摆脱此消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接