9

我试图让 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'.

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

4

2 回答 2

8

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

System.Security.Cryptography.CryptoConfig.AllowOnlyFipsAlgorithms

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

积极的一点是,在 Mono 的 github 版本中,CryptoConfig 类似乎已使用此属性进行了更新,如您在此处看到的:

当前单声道 CryptoConfig.cs 源,在主分支上

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

Mono 的 CryptoConfig.cs 的更改历史

AllowOnlyFipsAlgorithms 属性是在 2011 年 5 月 2 日添加的,一年前,但它不在当前的稳定版本中!!!这很奇怪……

您可以尝试下载 alpha 版本(Mono 2.11.2),看看它对您有什么帮助。

PS 我查看了 2.11.2 alpha 版本的源代码,看起来这个属性包含在这个版本中,所以试一试。希望这可以帮助。

于 2012-07-03T02:17:52.187 回答
2

你需要几个步骤,

  1. 安装所有单声道程序集(以便获得 WindowsBase)。
  2. 导入证书。
  3. 获取 Microsoft.Build.dll。

然后你应该能够运行 NuGet。我在这里记录了更多细节,

http://www.lextm.com/2013/01/how-to-use-nuget-on-mono-part-i.html

于 2013-01-28T02:11:46.897 回答