在构建服务器

时间:2017-03-08 18:31:51

标签: f# sdk msbuild

我在PC上安装了支持F#支持的Visual Studio 2017,C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\FSharp中的MSBuild目标和C:\Program Files (x86)\Microsoft SDKs\F#\4.1中的F#4.1 SDK

我已经为Visual Studio 2017安装了构建工具(来自https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15),但没有安装F#SDK的选项,因此使用MSBuild 15构建F#项目失败。

如何在不安装Visual Studio的情况下安装F#4.1 SDK?

3 个答案:

答案 0 :(得分:4)

可以安装MSI,但尚未在MSDN上发布 但很快就会出现。

您可以在此处跟踪问题:在GitHub上:

“将FSharp Tools MSI部署到MSDN#2553” https://github.com/Microsoft/visualfsharp/issues/2553

Kevin Ransom

答案 1 :(得分:3)

在SDK可以单独安装之前的短期修复是向项目文件添加一个指令,以在NuGet包文件夹中查找Microsoft.FSharp.Targets文件。以下是我采取的解决此问题的步骤:

确保您使用VS.NET 2017中的新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包步骤

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

其工作原理如下: 这将检查FSharpTargetsPath是否存在,以及是否使用packages文件夹作为源。您不希望始终使用packages文件夹,否则在用户计算机上的新结帐时,包不可用,并且构建将失败。为了在构建服务器上工作,这假定您有一个步骤来恢复构建之前的NuGet包。

答案 2 :(得分: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 Core / CLI

  • 在微软的网站上搜索似乎找不到任何东西......

enter image description here

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

  • 还有原始NuGet包(4.1)

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

  • 底线:我认为它的新版本尚未以与之前版本类似的格式发布。我会每24小时检查一次,看看他们是否在网站上更新了它。