在MacOS上的命令行上使用nuget安装软件包?

时间:2014-03-11 10:28:06

标签: mysql macos f# mono nuget

我在OS X上尝试F#而我在安装软件包时遇到问题。我的问题是使用MySQL。 我已经下载了Nuget,我可以启动它。但是,我没有找到任何有关如何在命令行上使用它的有用文档。

我设法通过

安装MySQL.Data
mono nuget.exe install MySql.Data

将其下载到我当前的存储库。这是正常的吗?我期待它“安装”在更中心的目录中。

此外,当我尝试要求它时,r "MySql.Data它不起作用。如果我通过执行以下操作正确设置包含路径,它就可以工作:

fsharpi --lib:MySql.Data.6.8.3/lib/net45

但这似乎超级沉重。有没有办法自动在路径中添加所有已安装的nuget?

2 个答案:

答案 0 :(得分:6)

简短回答:不。

答案很长:是的,但它不会成为你所希望的。

可以让NuGet将已安装的库放在某个特定的位置。在Mac OS上,将以下内容添加到~/.config/NuGet/NuGet.Config

的末尾
<configuration>
  <config>
      <add key="repositoryPath" value="/path/to/where/you/want/it/to/go" />
  </config>
</configuration>

然而,(a)NuGet仍然将DLL放在不同的目录中,因此fsharpi找不到它们仍然没有单一的位置。 (b)无论如何fsharpi并不尊重$MONO_PATH,Mono的规范方式来添加到DLL搜索路径。

我最接近fsharpi的可行解决方案是:

  1. 每当你想要一个包时,手动将它添加到MONO_PATH(例如,在~/.profile中)。例如,假设你告诉nuget把东西放进/opt/nuget你会添加:

    export MONO_PATH = $ MONO_PATH:/opt/nuget/MySql.Data.6.8.3/lib/net45

  2. 每当您运行fsharpi时,请明确提供$MONO_PATH

    fsharpi -I:$ MONO_PATH

  3. 如果您有冒险精神,可以修补fsharpi脚本以自动加入$MONO_PATH

    我发现这不值得付出努力。简单地构建一个脚本,使用您当前正在处理的任何选项启动fsharpi是一个更实用的解决方案。

    我是Mac上的F#程序员。我的生活就像是对已婚人士的非法恋情:我忍受所有的小琐事,因为我的心让我别无选择。

答案 1 :(得分:4)

我看到的最常见用途是

mono nuget.exe install mysql.data -OutputDirectory packages -ExcludeVersion

哪个会安装在你项目的目录中(通常你会忽略你的存储库中的packages目录,然后只用脚本恢复它),然后你就可以在packages/MySql.Data/lib/net45找到它

将nuget下载到您的存储库也很常见。

您总是可以编写自己的脚本来执行您想要的fsharpi连接,nuget有很多约定,因此可以从lib/*/为您的目的选择正确的dll

可以使用fsharp脚本执行此操作,这里可以直接执行fsx script,下载nuget,从nuget安装,然后执行另一个脚本(使用fake不是fsharpi,但这完全有可能。