安装

2017-03-08 119 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小时检查一次,看看他们是否在他们的网站上更新它。