安裝

2017-03-08 105 views
5

我已經安裝了Visual Studio 2017在我的電腦F#支持構建服務器上的F#4.1 SDK和我有C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\FSharp的MSBuild目標和F#4.1 C:\Program Files (x86)\Microsoft SDKs\F#\4.1安裝

我已經安裝的Visual Studio 2017年生成工具SDK(從https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15),但沒有選擇安裝F#SDK,因此使用MSBuild 15構建F#項目失敗。

如何在不安裝Visual Studio的情況下安裝F#4.1 SDK?

回答

2

短期修復,直到SDK可以安裝單獨向項目文件添加指令以在Microsoft.FSharp.Targets文件的NuGet包文件夾中查找。下面是步驟,我把解決這個問題:

確保使用從2017年VS.NET新的F#項目作爲其有這個指令您:

<Import Project="..\packages\FSharp.Compiler.Tools.4.1.17\build\FSharp.Compiler.Tools.props" Condition="Exists('..\packages\FSharp.Compiler.Tools.4.1.17\build\FSharp.Compiler.Tools.props')" /> 

替換項目文件的此部分:

<Choose> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.3.0.0 AND $(TargetFSharpCoreVersion) &lt; 4.3.1.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.3.1.0 AND $(TargetFSharpCoreVersion) &lt; 4.4.0.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\3.1\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.4.0.0 AND $(TargetFSharpCoreVersion) &lt; 4.4.1.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\4.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <Otherwise> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\4.1\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </Otherwise> 
</Choose> 

有了這個XML:

<Choose> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.3.0.0 AND $(TargetFSharpCoreVersion) &lt; 4.3.1.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.3.1.0 AND $(TargetFSharpCoreVersion) &lt; 4.4.0.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\3.1\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <When Condition="$(TargetFSharpCoreVersion) &gt;= 4.4.0.0 AND $(TargetFSharpCoreVersion) &lt; 4.4.1.0 "> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\4.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <Otherwise> 
     <PropertyGroup> 
     <FSharpTargetsPath>$(MSBuildProgramFiles32)\Microsoft SDKs\F#\4.1\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </Otherwise> 
    </Choose> 
    <!-- This is needed for TeamCity where F# SDK is only available via NuGet right now - hopefully can be removed at some point once the SDK is available for install --> 
    <PropertyGroup Condition="!Exists('$(FSharpTargetsPath)')"> 
    <FSharpTargetsPath>$(FscToolPath)\Microsoft.FSharp.Targets</FSharpTargetsPath> 
    </PropertyGroup> 

確保您構建服務器已經恢復的NuGet包步驟PRI或者做構建

確保你包文件包括:FSharp.Compiler.Tools和FSharp.Core

這部作品的原因如下: 此檢查,看是否存在FSharpTargetsPath,如果不使用包文件夾作爲源。您不希望在用戶機器上的全新結帳中始終使用packages文件夾,否則軟件包不可用,並且構建將失敗。爲了在構建服務器上工作,假設你有一個步驟來恢復NuGet包PRIOR來完成構建。

+0

適用於我們。這足以添加Fsharp.Compiler.Tools nuget。它自動添加導入語句並添加所需的唯一更改是條件導入(最後在您的代碼段中) –

1

看來它是如此新的東西尚未更新。安裝一個構建服務器

  • 四個步驟(向下滾動到選項3)

http://fsharp.org/use/windows/

(4.0)

  • 按照MSDN博客...

https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-f-4-1-and-the-visual-f-tools-for-visual-studio-2017-2/

from blog post

看來你至少需要.NET核心/ CLI

  • 搜索上微軟的網站似乎並沒有找到什麼...

enter image description here

最接近的是4.0工具: https://www.microsoft.com/en-us/download/details.aspx?id=48179

  • 有ALSE原始的NuGet包(4.1)

https://www.nuget.org/packages/FSharp.Compiler.Tools https://www.nuget.org/packages/FSharp.Core

  • 底線:我認爲它太新了尚未發佈類似的格式到以前的版本呢。我會每24小時檢查一次,看看他們是否在他們的網站上更新它。