找不到名为“Build”的目标

时间:2013-10-22 21:33:07

标签: .net msbuild f# f#-fake

我正在尝试构建简单的F#控制台程序,使用包含MSBuild工具的FAKE构建工具,但我得到以下内容:

  

FSProject.fsproj:错误:未找到名为“Build”的目标   项目

我该如何解决这个问题?

我正在使用VS2013和.net 4.5

2 个答案:

答案 0 :(得分:3)

问题是由于我使用的FAKE构建工具使用了来自c:\Windows\Microsoft.NET\Framework\v4.0.30319的旧版MSBuild工具。但是只能在[ProgramFilesX86]\MSBuild\12.0\bin中安装新版本的MSBuild来构建VS2013 F#项目。

那么,如何在FAKE工具中解决这个问题:

您应该根据this

更改FAKE.exe.config

即。将MSBuildPath设置更改为实际路径。

答案 1 :(得分:0)

要发现问题,您可以先为fsproj文件创建自己的构建目标:

<Target Name="Build">
    <Message Text="Ext = $(MSBuildExtensionsPath)" />
    <Message Text="Tools = $(MSBuildToolsVersion)" />
    <Message Text="msb32 = $(MSBuildExtensionsPath32)" />
    <Message Text="targ = $(TargetFrameworkIdentifier)" />
    <Message Text="fs = $(FSharpTargetsPath)" />
    <Message Text="vs = $(VisualStudioVersion)" />
</Target>  

问题可能是有条件说类似

  <PropertyGroup Condition="'$(VisualStudioVersion)' != '11.0'">
    <FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
  </PropertyGroup>

但对于最近的Visual Studio,条件不满足,或者路径实际上在其他地方, 例如VisualStudio\v$(MSBuildToolsVersion)\FSharp\中的内容,而不是VisualStudio\v$(VisualStudioVersion)\FSharp\中的内容,以便快速解决 您可以将其回退到其他类似

  <PropertyGroup Condition="'$(VisualStudioVersion)' != '11.0' And Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\')">
    <FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(VisualStudioVersion)' != '11.0' And Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\FSharp\')">
    <FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
  </PropertyGroup>