Mono 在Linux环境下使用xbuild构建.NET项目

Mono 在Linux环境下使用xbuild构建.NET项目,mono,nuget,xbuild,nuget-package-restore,Mono,Nuget,Xbuild,Nuget Package Restore,我有一个非常简单的项目,它是用Visual Studio 2013创建的,使用Nancy Asp.Net Web应用程序模板 在我的开发机器中,它由Visual Studio 2013成功构建 但当我尝试在Linux Mono环境中使用xbuild构建相同的源代码时,它失败了 以下是输出: root@jannes:/home/hitly/hitly/src/hitly.Service#xbuild XBuild引擎版本12.0 Mono,版本3.2.8.0 版权所有(C)2005-2013各种M

我有一个非常简单的项目,它是用Visual Studio 2013创建的,使用Nancy Asp.Net Web应用程序模板

在我的开发机器中,它由Visual Studio 2013成功构建

但当我尝试在Linux Mono环境中使用xbuild构建相同的源代码时,它失败了

以下是输出:

root@jannes:/home/hitly/hitly/src/hitly.Service#xbuild
XBuild引擎版本12.0
Mono,版本3.2.8.0
版权所有(C)2005-2013各种Mono作者
建造开始于2014年3月31日下午2:11:49。
__________________________________________________
项目“/home/hitly/hitly/src/hitly.Service/hitly.Service.csproj”(默认目标):
目标恢复包:
正在执行:mono--runtime=v4.0.30319../.nuget/nuget.exe安装“”-source“”-RequireConsent-solutionDir“
指定的路径不是合法形式(空)/home/hitly/hitly/src/.nuget/nuget.targets:错误:命令'mono--runtime=v4.0.30319../.nuget/nuget.exe安装”“-source”“-RequireConsent-solutionDir”“。/”,已退出,代码为:1。
任务“Exec”执行--失败
已完成在项目“/home/hitly/hitly/src/hitly.Service/hitly.Service.csproj”中构建目标“RestorePackages”。--失败
完成建筑工程
“/home/hitly/hitly/src/hitly.Service/hitly.Service.csproj”-失败
生成失败。错误:
/home/hitly/hitly/src/hitly.Service/hitly.Service.csproj(默认目标)->/home/hitly/hitly/src/.nuget/nuget.targets
(恢复包目标)->
/home/hitly/hitly/src/.nuget/nuget.targets:错误:命令'mono--runtime=v4.0.30319../.nuget/nuget.exe安装”“-source”“-RequireConsent-solutionDir”“。/”,已退出,代码为:1。
0个警告
1个错误
时间流逝00:00:00.7254640
我不明白错误的原因

如何在Linux上构建这些源代码?

已修复

我只是将
PackagesConfig
元素添加到
.nuget/nuget.targets

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
    <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
    <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
    ++++<PackagesConfig>packages.config</PackagesConfig>
</PropertyGroup>

$(SolutionDir).nuget
++++packages.config

NuGet.targets是NuGet包还原的关键文件,但NuGet guys无法很好地管理其版本

您遇到的问题只是表明您使用的版本不支持单声道。您的编辑可能会起作用,但我建议您关注NuGet Git存储库以获取最新信息,例如

希望NuGet的家伙能在Mono上做更多的测试,因为从长远来看,这可以防止类似的问题


(请忘记这个答案。NuGet最新控制台可以在最新的Mono上运行,并且还原机制也被更改以删除此目标文件。)

我在
~/.NuGet
文件夹中没有
NuGet.targets
文件,只有
NuGet.exe
。使用默认设置创建一个怎么样?我需要在Linux中运行NuGet,NuGet Git repository页面(位于GitHub)中的文档没有描述如何在Linux下构建它,我是否遗漏了什么?谢谢。@W.M.您现在只需在Mono上使用NuGet.exe,这个答案不再有效。