我们正在使用TFS和VS 2010。
我一直在研究一个使用TFS作为源代码控制的项目。 我有很多我下载的dll(例如log4net)并在我的项目中引用。
当一个新程序员连接到TFS并使我的项目没有源代码控制时,它无法构建,因为它说它缺少所有这些引用的dll。
我在这里做错了什么?如何在源代码管理中包含这些引用的DLL。 在引用它们之前,是否需要将所有这些dll添加到我的项目中?当我引用它们时,我只是浏览了它们在我的文件系统中的位置。
谢谢!
答案 0 :(得分:47)
我发现第三方DLL的最佳做法是在sln / proj文件结构中创建一个“Library”文件夹,并将所有必需的DLL复制到此本地文件夹中以供参考。您还需要确保将这些DLL检入源代码管理中。这样,在项目上工作的每个人都获得所有DLL的完全相同的版本,并且参考路径完全相同。
在任意下载或安装位置引用第三方库将会出现问题,因为它需要所有开发人员为所有DLL维护相同的下载结构。此外,如果每个人都引用项目结构之外的DLL,那么很难保证每个人都使用相同的版本。
另一个选择是让每个人都将DLL安装到GAC中,但这也是一个真正的痛苦,特别是对于版本管理和部署。
答案 1 :(得分:7)
我在项目文件夹中创建了一个“ThirdPartyDLL”文件夹,其中我将所有额外的DLL复制到其中。然后我进入源资源管理器并将这些DLL添加到团队基础服务器中,因此我可以确定我正在为我的应用程序的特定版本使用正确版本的DLLS(所以其他所有人都和我一样在同一页面上)。
查看 - 其他窗口 - 源coontrol资源管理器 右键单击项目文件夹 - 将项目添加到文件夹
您将无法选择包含DLL的特定文件夹,而是可以选择文件夹中的各个DLL文件。然后,您将看到该窗口中出现“ThirdPartyDLL”文件夹。
完成此操作后,这些dll将在团队基础源代码控制中。每当dev检入时,它们都将获得最新版本的DLL。
不要忘记删除应用中的旧引用,并将其更改为thirdpartydll文件夹。
我曾经将DLL复制到bin文件夹中,但我遇到的问题是DLL升级的时候。最初,当我的项目很小时,这不是什么大问题。既然我创建了多个DLL和应用程序,那么在我的项目之外维护一致版本的DLL变得非常困难。我最好的例子是我购买的许可dll。升级后,所有应用程序和库都需要在同一版本上。如果我忘了一个然后我有奇怪的问题或应用程序刚刚停止工作。现在我将所有内容放在一个文件夹中,我进行了一次更改,一切都升级了。
希望这有帮助。
答案 2 :(得分:2)
安迪的建议很好,我过去也曾用过。在我目前的工作中,我们在网络共享上有一个“参考”文件夹供我们所有人构建。我们这里有一个非常快速的网络,但所有开发人员都在一个办公室。如果您有许多远程开发人员或网络速度缓慢,此解决方案将无效。
答案 3 :(得分:1)
我已经尝试了各种方法来解决这个问题,并已决定在bin文件夹中删除所需的dll,并确保它们包含在源代码控制项目中。我听说有人说这可能不是一个好主意,但是没有人为它提供了很好的推理,这对我来说效果很好。
我的第二选择是在网络共享上划出一些空间并组织各种第三方dll。您可以将文件放在具有版本号的文件夹中以保持正确,每个人都应该可以访问他们需要的所有内容,只要每个人都使用普通的网络路径作为参考。
在项目中添加一个单独的文件夹也是可行的,但看起来很麻烦,因为你最终会得到你不希望包含在你的版本中的额外文件。
答案 4 :(得分:-1)
我的解决方法...确保所有内容均已签入,获取最新版本并使用包含所有内容(即解决方案,项目,DLL等)的有效代码复制文件夹。将该副本提供给需要它的开发人员。然后在TFS资源管理器中,让该开发人员映射到他们复制的文件夹。 TFS会说存在冲突,并询问您是否要合并。我只是选择覆盖。 TFS没有第三方DLL,但这很好,因为您是从工作版本中复制它们的,现在只是创建了用于签入/签出项目的绑定。换句话说,您现在应该使用此方法来完成所有工作。