Рассмотрим переназначение app.config предупреждения сборки в F #

После того, как я установил VS11, я начал получать следующую ошибку:

Рассмотрим переназначение app.config сборки «FSharp.Core, Culture = нейтральный, 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: обнаружены конфликты между разными версиями одной и той же зависимой сборки.

Что именно мне делать? Понятия не имею, как сделать такое переназначение.


person Oldrich Svec    schedule 31.10.2011    source источник


Ответы (3)


Ниже я думаю, что это образец app.config, который делает то, что предлагается. Однако что есть в вашем проекте и какая ссылка на FSharp.Core есть? Вы ориентируетесь на .Net 4.5 или 4.0 или что? Ссылается ли этот проект на какую-то старую библиотеку F #? Обычно это связано с тем, что два проекта ссылаются на разные версии FSharp.Core.dll, например проверьте <Reference> узлы в файлах .fsproj.

<?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>
person Brian    schedule 31.10.2011
comment
В fsproj не упоминается версия FSharp.Core. Вот ссылка (dl.dropbox.com/u/4571/send.zip) в файлы fsproj. Я смотрел в них, но ничего странного не увидел. Я нацелен на .NET 4.0 CL, и я не знаю, чтобы ссылаться на что-нибудь старое, но это может быть :) - person Oldrich Svec; 02.11.2011
comment
Есть ли у вас еще какие-нибудь предложения? - person Oldrich Svec; 03.11.2011
comment
да. Создайте новый проект F # с VS11 и проверьте его файл .fsproj. Теперь измените свои существующие проекты, удалив строки <Import> из целевых файлов и заменив их теми, что были во вновь созданном проекте VS11. Кроме того, недавно созданный проект будет иметь явные <Reference>s для mscorlib и FSharp.Core. Добавьте их в свои проекты, если их там нет (с желаемой версией / таргетингом, если необходимо). Думаю, тогда все наладится. - person Brian; 03.11.2011
comment
Если я это сделаю, будет ли решение работать на компьютерах без VS11? Я сотрудничаю в этом проекте с одним напарником, у которого не установлен VS11 на его машине. - person Oldrich Svec; 04.11.2011
comment
После многих проб и ошибок я обнаружил, что проблема возникает из-за компиляции Fsharp.PowerPack + в exe. Когда я создаю новое решение как в VS10, так и в VS11 и вставляю ссылку на powerpack, я получаю предупреждение. Что я могу сделать с блоком питания? - person Oldrich Svec; 04.11.2011
comment
Вам нужно либо перекомпилировать PowerPack из исходного кода, либо использовать перенаправление привязки; двоичный файл PowerPack прямо сейчас подключен к версии 2.0.0.0 FSCore. - person Brian; 04.11.2011
comment
Предложение для PowerPack - тот, который вы загружаете с Nuget, доступен во многих вариантах, включая 4.0. - person Robert Jeppesen; 23.05.2012
comment
Этот инструмент помог мне диагностировать аналогичную проблему: mikehadlow.blogspot.com/2011/02/ - person mcliedtk; 01.11.2012

такая же ошибка, связанная с 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>

Удаление старого решило проблему.

person cilerler    schedule 19.02.2014

Если вы успешно выполнили обновление, такой проблемы быть не должно ... Если вы не используете стороннюю библиотеку, которая использует сам старый FSharp.Core. В моем случае это делает FSharpPowerPack.

Поэтому вам нужно сначала обновить эту библиотеку, чтобы избавиться от этого сообщения.

person Andriy K    schedule 21.05.2012