2

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

FSProject.fsproj:错误:在项目中找不到名为“Build”的目标。

我该如何解决这个问题?

我正在使用 VS2013 和 .NET 4.5

4

2 回答 2

3

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

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

您应该根据此更改 FAKE.exe.config

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

于 2013-10-24T11:18:04.280 回答
0

要找到问题,您可以先为 fsproj 文件创建自己的 Build-target:

<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,条件不满足,或者路径实际上在其他地方,比如 inVisualStudio\v$(MSBuildToolsVersion)\FSharp\而不是 in,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>  
于 2019-10-22T09:01:41.287 回答