新的 F# 项目带有:
并且。
但这甚至看起来都不是一个好的解决方案。有没有更好的方法?
我也遇到了运行3.0 F#编译器fsc.exe和类似软件FAKE的问题:
“无法加载文件或程序集FSharp.Core,版本=4.3.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'或其某个依赖项。”
那么如何在3.0 / msbuild和3.1及更高版本的VS2013-preview之间不破坏兼容性呢?
<Choose>
<When Condition="'$(VisualStudioVersion)' == '11.0'">
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets')">
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets')">
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
</Otherwise>
</Choose>
<Import Project="$(FSharpTargetsPath)" />
使用MSBuild无法成功构建此项目文件,因此我甚至无法编写基于此项目文件的构建脚本。
我的解决方案:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\FSharp\Microsoft.FSharp.Targets" />
我将v12.0
替换为$(VisualStudioVersion)
,因为我的msbuild的VisualStudioVersion是11。但这会破坏与其他Visual Studio版本的兼容性。
我想我需要做类似的事情。
<FSharpTargetsPath Condition="'$(VisualStudioVersion)' == '11.0'">$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath>
并且。
<FSharpTargetsPath Condition="'$(VisualStudioVersion)' == '12.0'">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
但这甚至看起来都不是一个好的解决方案。有没有更好的方法?
我也遇到了运行3.0 F#编译器fsc.exe和类似软件FAKE的问题:
“无法加载文件或程序集FSharp.Core,版本=4.3.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'或其某个依赖项。”
那么如何在3.0 / msbuild和3.1及更高版本的VS2013-preview之间不破坏兼容性呢?
<Choose>
在那里是否有效。 - cnd