我正在尝试构建简单的F#控制台程序,使用包含MSBuild工具的FAKE构建工具,但我得到以下内容:
FSProject.fsproj:错误:未找到名为“Build”的目标 项目
我该如何解决这个问题?
我正在使用VS2013和.net 4.5
答案 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>