将第三方库添加到Visual Studio源代码控制

3

这是一个困扰我已久的问题,但我还没有找到一个好的解决方案。

我正在使用带有Subversion和Ankhsvn的Visual Studio 2010。它非常好用,但我的最大问题是它只检索和管理“包含在项目中”的文件。在许多情况下,这很棒,但当你想要一个包含在解决方案中但不想在项目本身中拥有的对象文件夹时(在这种情况下为Web项目),它就有些糟糕了。

在这种情况下,我想将一些第三方DLL包含在源代码控制中(以便在与版本控制同步时保持最新)。我不希望开发人员单独安装第三方dll。通常会发生的是,您从其他位置引用DLL,它们会在编译时复制到bin文件夹中。

我不想将它们包含在项目中,因为我不希望在发布网站时将它们复制到Web服务器上(除了它们应该在其中的bin目录中)。我考虑创建一个专门的项目来处理这些问题,但这将创建一个没有用途的dll,然后被引用并复制到bin文件夹中。

我还尝试从bin文件夹中检查它们,但这会导致许多问题,其中文件未正确同步,Subversion说有一个已经存在的版本文件夹等等。这似乎是Subversion或Ankhsvn问题,而不是Visual Studio问题。因此,我尝试保持bin文件夹不受版本控制的影响。

您如何在项目中解决这个问题?

1个回答

6
这是我们项目的做法。
我们有一个名为SourceCode的文件夹,其中包含多个子文件夹,每个子文件夹都包含代码项目。
此外,这个文件夹还有一个称为Library的文件夹,其中包含我们使用的任何第三方dll的正确版本。这个文件夹在版本控制中,因此每个人始终拥有正确版本的第三方dll。
在项目中对第三方dll的所有引用都是相对于这个Library文件夹的。
由于每个人都在其机器上有SourceCode文件夹,所以它可以完美地运行而没有问题。
编辑: 添加了解决方案文件夹的图像及其库内容。 VS Solution Folder

那完全没有回答我的问题。我明确地说过,我不想以这种方式处理事情,因为我不希望在发布时将dll推送到该文件夹中的服务器。替代方法是指定它们不包括在项目中,这意味着它们不会通过ankhsvn同步,并且需要与像Tortiose这样的东西同步,这很麻烦,需要在两个地方同步。 - Erik Funkenbusch
1
你不会发布一个文件夹,而是发布一个项目。因此,我不确定你的意思。我没有使用TortoiseSVN,只用ankhsvn。我不想同时使用两者。因此,所有版本控制都必须在Visual Studio中进行。 - Erik Funkenbusch
好的,如果你的Web应用程序项目在网站文件夹中,那么你是如何同步你的源代码树的呢?我猜想是通过类似TortoiseSVN这样的工具。而在我的情况下,我不想使用TortoiseSVN进行同步,我只想使用Ankhsvn。而且,由于AnkhSVN只同步包含在Visual Studio解决方案中的文件...你明白我的意思了吗? - Erik Funkenbusch
我已经尝试过那个方法了。解决方案文件夹不是实际的文件夹,它们只能包含其他解决方案项(比如项目)。因此,你不能把像文件夹和程序集这样的物理元素添加到它们里面。 - Erik Funkenbusch
1
@Mystere Man - 你的意思是这样的 http://i56.tinypic.com/5ugys1.jpg 对你不起作用吗?我能够在VS2008中将程序集添加到解决方案文件夹中。你使用的是哪个版本的VS? - Jagmag
啊..之前我试图将文件添加到解决方案文件夹时,我尝试添加带有子文件夹的文件,这就是问题所在。当我逐个添加DLL文件时,它可以工作。谢谢。 - Erik Funkenbusch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接