Visual studio 2013 如何在团队中共享NuGet

Visual studio 2013 如何在团队中共享NuGet,visual-studio-2013,nuget,Visual Studio 2013,Nuget,我有一个包含6个研发项目的解决方案。最近,我们升级到Visual Studio 2013,升级解决方案后,我添加了第7个项目(ASP.net MVC),该项目在我的解决方案文件夹中添加了一个packages文件夹 我最近将我的解决方案和项目添加到我们的生产份额中,这一份额由其他3名开发人员共享。我们的生产解决方案引用了一个libraries子文件夹。与我们的构建开发人员讨论我在生产环境中新添加的解决方案和项目文件夹时,他希望看到packages文件夹作为Libraries子文件夹的子文件夹移动,

我有一个包含6个研发项目的解决方案。最近,我们升级到Visual Studio 2013,升级解决方案后,我添加了第7个项目(ASP.net MVC),该项目在我的解决方案文件夹中添加了一个packages文件夹

我最近将我的解决方案和项目添加到我们的生产份额中,这一份额由其他3名开发人员共享。我们的生产解决方案引用了一个libraries子文件夹。与我们的构建开发人员讨论我在生产环境中新添加的解决方案和项目文件夹时,他希望看到packages文件夹作为Libraries子文件夹的子文件夹移动,并且所有团队都引用该位置的单个packages文件夹。我们不使用Team Foundation。

既然我没有告诉nugget在哪里创建包(它们只是放在解决方案文件夹中),那么在我将文件夹移动到新位置后,有没有办法告诉它在哪里查找包?其他开发人员将如何配置他们的VisualStudio实例以查看共享文件夹而不是本地计算机?假设,一旦他们在本地构建解决方案,它也会添加一个本地包文件夹,我们不希望这样


看起来这很直截了当。事实上,NuGet网站说您可以共享packages文件夹,但它说您必须修改NuGet.config,而我的解决方案中没有。感谢您的任何想法/建议。

Nuget本身就是一个包管理存储库。它的全部目的是允许您集中地将您需要的包(库、配置等)放到系统的本地位置(无论是开发、生产等),而无需将这些库提交给您的源代码管理。相反,任何开发人员只需提交一个文件,该文件相当于“按此ID(名称)和版本给我一个包”

此过程在解决方案中每个项目的顶层创建一个名为packages.config的文件。该文件的外观如下所示:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.1.1" targetFramework="net45" />
  <package id="jQuery" version="2.1.1" targetFramework="net45" />
</packages>

文件本身被放置在需要的项目中(对于像jQuery这样的项目),或者库二进制文件被存储在解决方案的顶层名为packages的文件夹中,不应签入源代码管理

您还可以为Nuget启用“自动还原”包,这样当任何人签出您的项目时,他们都会自动获取库和所需的东西,以便您的项目能够正确运行/构建

这意味着每个人都能得到他们所需要的,您不需要管理自己的“库存储库”(请…不要共享文件夹!),而且,在任何时候,您都可以查看packages.conf文件夹以查看项目所依赖的内容

这里有更多关于如何启用和使用Nuget进行开发和构建系统的链接。网络上还有许多其他资源


如果我正确理解了您的问题,为什么构建开发人员会关心packages文件夹的位置?Nuget对此有一个约定——让它处理包的位置(如果他设置正确,MSBuild将自动抓取并放置库)。我认为问题实际上是每个开发人员在其本地存储库中都有包,然后在签入过程中,每个开发人员的移动基本相同“一揽子计划”。他可能根本不在乎,但他是提出裁员的人。好吧,我明白你的意思。如果一揽子计划在官方的Nuget回购协议中,你可以从那里撤出。如果它们是“内部”的“我建议您建立自己的内部Nuget回购协议。您确实希望避免指向包的共享文件夹。我刚刚将一个客户机从那个位置移开,因为他们在那个特定的设置中遇到了许多部署问题(更不用说在项目中添加一个新的开发人员了)。NuGet在本地将文件添加到packages文件夹。现在,我已经将研发转移到了生产中,每个开发人员是否都应该有一个包含EF6的packages文件夹,或者我们是否应该为解决方案中简单“指向”的包提供一个存储库。我看不到每个人都有自己的内部存储库的价值。