mono - 如何在Mono 2.10.9上运行NuGet?

标签 mono nuget

我试图让NuGet在Mono 2.10.9(Mac)上运行,但是没有运气。

我想从NuGet存储库安装Nancy:

mono --runtime=v4.0 /usr/local/bin/NuGet.exe install Nancy -Version 0.11.0

但是,最终出现此错误消息:
Missing method System.Security.Cryptography.CryptoConfig::get_AllowOnlyFipsAlgorithms() in assembly /Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/mscorlib.dll, referenced in assembly /usr/local/bin/NuGet.exe
Method not found: 'System.Security.Cryptography.CryptoConfig.get_AllowOnlyFipsAlgorithms'.

我可以列出没有问题的存储库。
mono --runtime=v4.0 /usr/local/bin/NuGet.exe list Nancy

我试图将Microsoft.Build.dll添加到与NuGet.exe相同的路径(来自站点的提示。我不记得在哪里)。

我最终遇到此错误:
Invalid type Microsoft.Build.Evaluation.Project for instance field NuGet.Common.MSBuildProjectSystem:<Project>k__BackingField
Could not load type 'NuGet.Common.MSBuildProjectSystem' from assembly 'NuGet, Version=2.0.30619.9000, Culture=neutral, PublicKeyToken=null'.

关于如何在Mono(Mac)上运行NuGet.exe的任何建议?

最佳答案

恐怕您安装的Mono版本无法做到这一点。
该特定版本(2.10.9)不包含s​​tatic属性:

System.Security.Cryptography.CryptoConfig.AllowOnlyFipsAlgorithms

这似乎是NuGet.exe“安装”功能所必需的。
“列表”命令之所以可行,是因为它没有使用加密程序集(在.NET中,程序集是延迟加载的,仅当执行代码需要它们时)。

令人欣慰的是,似乎在Mono的github版本中,CryptoConfig类已使用此属性进行了更新,如您在此处看到的:

Current mono CryptoConfig.cs source, on master branch

这表明该更改应已包含在2.10.9版本中:

History of changes on mono's CryptoConfig.cs

在一年前,2011年5月2日添加了AllowOnlyFipsAlgorithms属性,但该属性不在当前的稳定版本中!!!
哪有...

您可以尝试下载Alpha发行版(Mono 2.11.2),然后看看能为您带来什么。

P.S.
我已经查看了2.11.2 alpha版本的源代码,并且看起来该属性包含在此版本中,因此请尝试一下。
希望这可以帮助。

关于mono - 如何在Mono 2.10.9上运行NuGet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301613/

相关文章:

.net - 将 nuget 包存储在构建服务器上的备用位置

macos - F# 无法在 MonoDevelop 2.8 for Mac 上安装

.net - Mono 创建的功能可在 .NET 上使用?

java - 使用 SpringFlux 的 webclient 重复 Mono

f# - 使用自定义版本的 FSharp.Core.dll

visual-studio - 如何在 Visual Studio 2017 中修复此 NuGet 重新启动循环?

visual-studio - 从 Visual Studio 中对 Artifactory 上的 NuGet 进行身份验证

nuget - 如何删除旧的 NuGet 包

c# - Mono无法打开sqlite数据库

github - 私有(private) Github 存储库作为带有 Paket 的 Nuget 源