【发布时间】:2011-10-20 00:28:25
【问题描述】:
我有一个主要是 C# 的 VS 2010 混合语言解决方案,但包含一个用 F# 编写的 Windows 服务。我已经在并行环境中使用 xbuild 构建了这个构建,但是自从从 badgerports 升级到 mono 2.10.5 的打包版本后,我一直无法让它工作。
我通常遇到的错误是:
/home/alex/git/Solution/FSProject/FSProject.fsproj:错误:在项目中找不到名为“Build”的目标。
令我困惑的是,查看项目文件,似乎没有定义任何目标。我远非 MSBuild 专家,但这对我来说似乎有点奇怪。话虽如此,它以前确实有效。
有没有人遇到过(并希望找到解决方案)类似的问题?如果可能的话,我希望能够使用 xbuild 和 Visual Studio 构建解决方案。
环境是 mint 11(不确定这是基于 ubuntu maverick 还是 natty),从 badgerports 运行单声道 2.10.5。 fsharp 是从最新源安装到默认前缀。
编辑
多亏了 Brian 的指点,我才能够更接近一点(我确实必须硬编码路径,xbuild 似乎无法解决诸如 "$(MSBuildExtensionsPath32)..\FSharp\1.0\Microsoft. FSharp.目标”)。 FSC 现在实际上已被调用,尽管它抱怨无法解析对 FSharp.Core 的引用。
我发现此页面 F# and XBuild (Debian) 有助于实现这一目标。
【问题讨论】:
-
作为一个起点,项目文件将包含一个
<Import>的其他.targets文件,并且这些其他目标定义例如Build目标。 -
谢谢布赖恩 - 这可能让我走上了正轨。我看到它正在从两个位置导入 Microsoft.FSharp.targets,我不相信任何一个都可以在 linux 机器上正确解析(目前无法检查)。如果最终是这种情况,我会看看是否有一种方法可以基于类似于“Environment.OSVersion.Platform”的东西进行条件导入,如果这不起作用,我可以使用符号链接或设置“Mono " 构建配置以控制此行为并将其传递给 xbuild。
标签: visual-studio-2010 msbuild f# mono xbuild