构建 Xamarin.iOS 项目时,NuGet 包恢复失败,错误代码为 127
NuGet packages restoration failed with error code 127 when building a Xamarin.iOS project
我正在尝试在 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 是最新的。在项目中禁用 nuget 恢复后,.csproj 文件编译工作正常。
请指教
退出代码:127 = "command not found"
在 base 解决方案目录中,运行 后面的 cmd 真的有效吗?
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 重试。
在@RobertN 的帮助下,我能够找到错误并正确配置 nuget 的构建目标以使用正确的单声道。我指定了单声道的完整路径,现在可以使用了。
是:
<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>
EDIT1:但最正确的方法是通过在恢复模式下禁用系统完整性保护来为 mono 和 msc 命令创建 link:
csrutil disable
然后重新启动并运行那些命令:
sudo ln /Library/Frameworks/Mono.framework/Commands/mcs /usr/bin/
sudo ln /Library/Frameworks/Mono.framework/Commands/mono /usr/bin/
我正在尝试在 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 是最新的。在项目中禁用 nuget 恢复后,.csproj 文件编译工作正常。
请指教
退出代码:127 = "command not found"
在 base 解决方案目录中,运行 后面的 cmd 真的有效吗?
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 重试。
在@RobertN 的帮助下,我能够找到错误并正确配置 nuget 的构建目标以使用正确的单声道。我指定了单声道的完整路径,现在可以使用了。
是:
<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>
EDIT1:但最正确的方法是通过在恢复模式下禁用系统完整性保护来为 mono 和 msc 命令创建 link:
csrutil disable
然后重新启动并运行那些命令:
sudo ln /Library/Frameworks/Mono.framework/Commands/mcs /usr/bin/
sudo ln /Library/Frameworks/Mono.framework/Commands/mono /usr/bin/