我使用VS2013中的一个Nancy模板创建了一个F#项目。 代码基本上就是模板创建的内容。
我可以将创建的.sln文件导入Xamarin工作室,所有构建和运行都没有任何错误或问题。
当我尝试将项目推送到Heroku时,我收到错误:
/tmp/build_b3e2706f-20c8-421e-a1ce-781831880466/NancyFirstProject/NancyFirstProject.fsproj: error : /tmp/build_b3e2706f-20c8-421e-a1ce-781831880466/NancyFirstProject/NancyFirstProject.fsproj: The required attribute "Project" in Import is empty
我在Heroku上设置了buildpack,如下所示:
heroku config:set BUILDPACK_URL=https://github.com/aktowns/mono3-buildpack.git
我已经读过,如果您通过VS2013升级项目,可能会发生类似的错误。
这和我得到的错误一样吗? 我可以用另一个buildpack来解决这个问题吗?
我想我可以在Xamarin中创建解决方案,但如果可能,我想坚持使用vs2013。
编辑:**
在.fsproj文件中注意到这一点:
<Choose>
<When Condition="'$(VisualStudioVersion)' == '11.0'">
<PropertyGroup>
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
</Otherwise>
</Choose>
<Import Project="$(FSharpTargetsPath)" Condition="Exists('$(FSharpTargetsPath)')" />
答案 0 :(得分:5)
我不完全确定为什么这不起作用,但是我必须摆脱F#项目文件中的<Choose>
标记,以便让F#Formatting项目在Travis上工作(使用Mono构建)以及我必须做的改变looks like this (GitHub diff)。很抱歉缺乏明确性 - 我可能会从其他项目中复制此内容。
diff将<Choose>
标记替换为:
<PropertyGroup>
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'">
<FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath>
</PropertyGroup>
答案 1 :(得分:0)
现在可以使用here中的buildpack并指定更高版本的.net框架来解决此问题。