如何在Mono 2.10.9上运行NuGet?

时间:2012-07-02 21:43:27

标签: 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的任何建议?

2 个答案:

答案 0 :(得分:8)

我担心你已经安装的Mono版本无法做到这一点。 该特定版本(2.10.9)不包含静态属性:

System.Security.Cryptography.CryptoConfig.AllowOnlyFipsAlgorithms

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

从积极的方面来看,似乎在Mono的github版本中,CryptoConfig类已使用此属性进行了更新,如您所见:

Current mono CryptoConfig.cs source, on master branch

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

History of changes on mono's CryptoConfig.cs

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

你可以尝试下载alpha版本(Mono 2.11.2),看看它能为你做些什么。

P.S。 我已经查看了2.11.2 alpha版本的源代码,看起来这个属性包含在这个版本中,所以试一试。 希望这会有所帮助。

答案 1 :(得分:2)

您需要几个步骤,

  1. 安装所有单声道程序集(以获取WindowsBase)。
  2. 导入证书。
  3. 获取Microsoft.Build.dll。
  4. 然后你应该能够运行NuGet。我在这里记录了更多细节,

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