2013-09-28 25 views
6

阅读Using NuGet without committing packages to source control我明白我应该添加.nuget文件夹到我的项目,以使构建过程中包恢复...和阅读Prepare a git repo for NuGet我明白我可以删除NuGet.exeNuGet.config并让IDE通过在NuGet.targets中设置DownloadNuGetExetrue自动下载它们。的NuGet - 如何配置包上的MonoDevelop/Xamarin Studio中恢复

嗯,我有点自1混淆)Xamarin Studio不下载既不NuGet.exe也不NuGet.config ...; 2).nuget文件夹是没有必要的,因为一个可能只是发出命令上恢复的NuGet包无论如何,解决方案资源管理器和软件包都会恢复。

话虽如此,在Xamarin Studio/MonoDevelop上配置软件包还原的正确方法是什么?

回答

3

启用程序包恢复功能,以便在项目编译时发生这种情况,这是使用Xamarin Studio的NuGet插件无法实现的。这是我没有实现的东西。如果你想这样做,你将不得不手动添加文件并编辑项目以使用NuGet.targets文件。

就我个人而言,我会使用Restore NuGet Packages菜单选项,而不使用NuGet.targets文件。你在这里失去的一件事是触发每个构建的包恢复,但是你只需要做一次。您也可以使用这种方法获得一些好处:

  1. 您的项目不需要修改。
  2. 在运行XBuild之前,所有的Nu​​Get包都将被恢复,所以任何拥有自己定制的XBuild导入的NuGet包都将在编译时恢复并可用。
+3

为什么不实施? – JarrettV

+0

NuGet团队建议应该使用NuGet恢复,而不是使用NuGet.targets文件。最新版本的NuGet会在编译时自动恢复NuGet包,而不需要NuGet.targets文件。所以这可以在Xamarin Studio插件中实现。缺点是插件需要在启动时加载以检测任何构建事件。这就是我只是通过菜单添加对恢复的支持的原因。 –

3

或者您可以使用2.7中的新包恢复。刚刚运行

nuget.exe restore <your_solution_file> 

恢复项目在解决方案中使用的所有包。

查看http://docs.nuget.org/docs/reference/package-restore了解详情。

+0

据我所知,这在单声道上是行不通的,这正是OP所谈论的。对.sln的恢复包在nuget文档中特别声明为尚未在Mono下工作 - http://docs.nuget.org/consume/compatibility – piers7

+0

“nuget restore solution.sln”适用于NuGet 3.3,但不适用于本地(目录)的存储库。当然,本地回购不适用于我的GUI,所以... – tekHedd