3

当另一个开发人员从 TFS 的存储库中获取最新信息时,解决方案中每个项目的引用似乎没有正确链接。

根据我的假设,如果您使用 nuget,它会自动为您提取必要的库,不是吗?我是否必须进入 vs.net 并告诉它下载库?

或者我是否在 TFS 中添加了一些我不应该拥有的东西,以至于它假设我的包存储在特定路径中,而当其他开发人员下载存储库时它们可能不存在?

这是 vs.net 2010。

4

2 回答 2

3

我有一些类似的问题,所以我将 NuGet 模式切换为不将包提交到源代码控制

  1. 转到选项->包管理器->常规并选中“允许 NuGet 在构建期间下载丢失的包”复选框,然后按“确定”。
  2. 在 Visual Studio 解决方案资源管理器中右键单击解决方案,然后选择“启用 NuGet 包还原”。

我还将.nugetpackages文件夹(前面的步骤在解决方案的文件夹中创建)的内容添加到解决方案文件夹中的解决方案。这样我可以右键单击解决方案并选择“签入...”,然后将签入所有相关文件。如果这样做,那么不包含任何包文件(如 .dll 文件)非常重要在解决方案或 TFS 中,因为这将导致 NuGet 无法正常工作。如果您选择不执行此操作,则您需要使用Pending Changes窗口或右键单击Source Control Explorer中的解决方案文件夹并选择“Check In Pending Changes...”来签入您的更改。

我的 .nuget 解决方案文件夹包含以下文件:

  • Notes.txt 描述了我如何设置 NuGet、为什么按我的方式设置它以及任何使用说明/问题。
  • NuGet.config
  • NuGet.exe
  • NuGet.targets

我的包解决方案文件夹包含以下文件:

  • 存储库.config
于 2013-04-11T20:15:59.373 回答
2

出于某种原因,“允许 NuGen 下载丢失的软件包”并没有为我解决。我注意到在我的解决方案中为 nuget 内容创建了一个“包”文件夹。我已经签入了,但默认情况下 TFS 会过滤掉 .dll 文件。所以我不得不回到我的源代码管理资源管理器中的“包”文件夹,并添加 .dll 并签入更改。

例如,这是 Visual Studio 2013 中检查我从 NuGet 获得的 EntityFramework .dll 的步骤(假设您已经检查了没有 .dll 的“包”文件夹)

  1. 在源代码管理资源管理器中找到您的包文件夹
  2. 单击左侧的小箭头打开文件夹
  3. 在您打开的文件夹中找到“lib”文件夹
  4. 右键单击“net45”文件夹(或“net40”或其他)并选择上下文选项以“将项目添加到文件夹。
  5. 从“添加到源代码管理”弹出窗口中,双击“net45”文件夹。
  6. 您应该会看到一些在您初次签入时被排除的 .dll 文件
  7. 单击丢失的文件,然后单击下面的“下一步”按钮...
  8. 希望 .dll 现在位于“要添加的项目”选项卡中……如果没有点击屏幕底部的按钮以“包含项目”。
  9. 点击完成按钮
  10. 签入此待定更改
  11. 现在在新工作区中获取解决方案。
于 2015-03-13T21:48:15.693 回答