Używam podobnej konfiguracji, tylko że zajmuję kompilator F # z jego nuget package - działa lepiej w współdzielonych środowiskach kompilacji.
Będziesz potrzebował pliku .props
, który będzie zawarty we wszystkich twoich projektach F #, nazwałem go fsharp_project.props
. Zmieniając ten plik rekwizytów, możesz zaktualizować wersję kompilatora dla wszystkich swoich projektów F #. Jego zawartość powinna być następująca:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PackageRoot>C:\packages\Fsharp.Compiler.Tools.Nuget</PackageRoot>
<FscToolPath>$(PackageRoot)\tools</FscToolPath>
<FSharpVersion>v3.0</FSharpVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="FSharp.Core">
<HintPath>$(PackageRoot)\tools\fsharp.core.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Musisz ustawić ścieżkę do lokalnego wersji F # kompilatora, a także do bibliotek głównych, które chcesz użyć.
Następnie zmodyfikować plik .fsproj
spożywać ten plik w następujący sposób:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="C:\whereever\fsharp_project.props"/>
...
Dalej w pliku .fsproj
widać odniesienie FSharp.Core.dll
. Usuń to - w pliku rekwizytów istnieje już odniesienie do wersji rdzeniowych bibliotek dołączonych do kompilatora.
Załaduj ponownie projekt i przeprowadź jego kompilację, a następnie wydrukuje pełną ścieżkę używanego obiektu fsc.exe
.
Na marginesie: ta sama sztuczka z plikami .props
jest również niezwykle pomocna przy wskazywaniu właściwej wersji FSharp.Core.dll
w kliencie C# kodu F # - jest to częste źródło błędów środowiska wykonawczego. Dołącz plik rekwizytów, który odwołuje się tylko do FSharp.Core.dll
w każdym , a będziesz mógł przełączać wszystkie projekty C# do nowej wersji bibliotek rdzenia, jedynie aktualizując plik `.props '.
To działa fantastycznie i jest idealne. Dzięki. – Arafangion