2011-10-31 11 views
21

Po zainstalowaniu VS11, zacząłem się następujący błąd:„Rozważmy app.config ponowne mapowanie montaż ...” ostrzeżenie w F #

Consider app.config remapping of assembly "FSharp.Core, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" from Version "2.0.0.0" [C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll] to Version "4.0.0.0" [C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\FSharp.Core.dll] to solve conflict and get rid of warning. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1490,5): warning MSB3247: Found conflicts between different versions of the same dependent assembly.

Co dokładnie mam zrobić? Nie mam pojęcia, jak zrobić takie remapowanie.

Odpowiedz

18

Poniżej znajduje się przykładowy plik app.config, który robi to, co sugeruje. Ale co jest w twoim projekcie i jakie jest odniesienie do FSharp.Core? Czy kierujesz się na .Net 4.5 lub 4.0 lub co? Czy ten projekt odwołuje się do starszej biblioteki F #? Dzieje się tak zazwyczaj dlatego, że dwa projekty odwołują się do różnych wersji pliku FSharp.Core.dll, np. sprawdź węzły <Reference> w plikach .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> 
+0

Brak wersji FSharp.Core wspomnianej w fsproj. Oto link (http://dl.dropbox.com/u/4571/send.zip) do plików fsproj. Patrzyłem na nich, ale nie widziałem nic dziwnego. Celuję w .NET 4.0 CL i nie jestem świadomy odniesienia do czegoś starego, ale może być :) –

+0

Czy masz jakieś dalsze sugestie? –

+0

Tak. Utwórz nowy projekt F # z VS11 i sprawdź jego plik .fsproj. Teraz zmień istniejące projekty, usuwając linie '' z plików celów '' i zastępując je tymi, które są widoczne w nowo utworzonym projekcie VS11. Ponadto nowo utworzony projekt będzie miał jawne '' s do mscorlib i FSharp.Core. Dodaj je do swoich projektów, jeśli ich nie ma (z pożądaną wersją/kierowaniem, jeśli to konieczne). Myślę, że wtedy wszystko będzie działać. – Brian

0

Jeśli dokonaliśmy modernizacji dobrze, nie powinno być takie problem ... Chyba, że ​​używasz jakiś trzeci biblioteki strona, która używa starego sam FSharp.Core. W moim przypadku to FSharpPowerPack, który to robi.

Musisz najpierw zaktualizować tę bibliotekę, aby pozbyć się tej wiadomości.

3

sam błąd związany z Json.NET

W pliku projektu miałem

<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> 

i

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

Usuwanie stary rozwiązało problem.