构建Xamarin.iOS项目时,NuGet包还原失败,错误代码为127。

9
我正在尝试在Xamarin Studio中构建一个Xamarin.iOS项目。启用了Nuget包恢复,但在任何构建过程中,我都会收到以下错误消息:
/.nuget/NuGet.targets: Error: Command 'mono --runtime=v4.0.30319 "/.nuget/NuGet.exe" install "/ProjectName/packages.config" -source "" -RequireConsent -solutionDir "/" exited with code: 127. (ProjectName)
从终端运行相同的命令没有问题,并且输出以下消息:
Restoring NuGet packages... To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
.nuget/NuGet.exe和.nuget/NuGet.targets已经更新。禁用项目.csproj文件中的Nuget恢复后,编译工作正常。
请给予建议。
2个回答

7

退出代码:127 = "未找到命令"

基础解决方案目录下运行以下命令,是否真的有效?

mono --runtime=v4.0.30319 "/.nuget/NuGet.exe" install "/ProjectName/packages.config" -source "" -RequireConsent -solutionDir "/"
  • 如果Mono找不到CIL exe,则会导致退出代码为2,但我认为它没有正确找到mono...

如果您键入which mono,它是否在/usr/local/bin/usr/bin中找到?

尝试:

sudo ln /Library/Frameworks/Mono.framework/Commands/mono /usr/bin

请从Xamarin Studio重新尝试。

参考:https://forums.xamarin.com/discussion/43192/os-x-10-11-el-capitan-beta-and-xamarin-compiler-error-127


CTPAX-MBP:projectfolder astrakh$ which mono /usr/local/bin/mono | 看起来我已经安装了mono 4.0.4,但我不确定如何强制目标使用mono 4.0.4而不是4.0.3。 - Mando
我能够编辑要使用的版本,但没有帮助,还是出现了同样的错误。问题在于相同的命令可以通过终端成功执行。 - Mando
1
输出如下:ln: /usr/bin/mono: 操作不允许。 - Mando

3

在@RobertN的帮助下,我成功找到了错误,并正确配置了nuget的构建目标以使用适当的mono。我指定了mono的完整路径,现在它可以正常工作。

原文:

<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>

现在:

<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">/Library/Frameworks/Mono.framework/Versions/Current/bin/mono --runtime=v4.0 "$(NuGetExePath)"</NuGetCommand>

编辑1:但最恰当的方法是通过在恢复模式下禁用系统完整性保护来创建到mono和msc命令的链接:

csrutil disable

在安装Xamarin 5.9之前,您需要在OS X 10.11 El Capitan Beta上更新一些软件包。这个链接提供了解决方案。

然后重新启动并运行这些命令:

sudo ln /Library/Frameworks/Mono.framework/Commands/mcs /usr/bin/
sudo ln /Library/Frameworks/Mono.framework/Commands/mono /usr/bin/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接