2017-05-08 44 views

回答

4

我使用的是类似的设置,只是我消耗来自其nuget package F#编译器 - 这部作品在共享构建环境更好。

您需要一个.props文件才能包含在您的所有F#项目中,我称之为fsharp_project.props。通过更改该道具文件,您可以更新所有F#项目的编译器版本。其内容应如下所示:

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

您需要调整到本地版本的F#编译器以及您希望使用的核心库的路径。

然后修改.fsproj文件,以消耗该文件如下:

<?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"/> 
... 

.fsproj文件再往下,你会看到FSharp.Core.dll参考。删除 - 在props文件中,已经有对编译器附带的核心库版本的引用。

重新装载该项目,并重新构建,它会打印出它使用fsc.exe的完整路径。

附注:与.props文件相同的技巧对于引用F#代码的C#使用者中的FSharp.Core.dll的正确版本也非常有帮助 - 这是运行时错误的常见来源。包括道具文件,只有在各.csproj引用FSharp.Core.dll,你将能够只更新`.props'文件的内容全部C#项目切换到核心库的新版本。

+1

这很有效,非常完美。谢谢。 – Arafangion

相关问题