【问题标题】:Adding a Visual Studio reference to a product under source control将 Visual Studio 引用添加到受源代码控制的产品
【发布时间】:2009-07-10 14:13:29
【问题描述】:
例如,我试图在 Visual Studio 2008 中添加对 WatiN 的引用。我下载了 WatiN,我的桌面上有一个文件夹,其中包含 5 个文件:
- WatiN.Core.dll
- WatiN.Core.xml
- Interop.SHDocVw.dll
- Microsoft.mshtml.dll
- WatiN.Core.UnitTests.dll
- WatiN.Core.UnitTests.dll.config
我可以添加对 WatiN.Core.dll 的引用并开始在 Visual Studio 中编码。但我有一些问题:
- 我现在可以删除桌面上的文件夹吗?文件是否复制到项目 bin 中?
- 当我将我的项目签入源代码并且另一个开发人员签出时会发生什么?他/她是否必须在桌面上拥有相同的文件夹。
我的想法是在项目中创建一个lib文件夹并引用lib文件夹中的文件。该文件夹将被添加到源代码管理中,以便下一个开发人员一切正常。但我对此解决方案有一些疑问:
- 我需要所有这 6 个文件吗?
- 我相信 .config 文件与智能感知有关,但项目在没有它们的情况下也能构建和运行,对吗?
- 我如何知道除了 WatiN.Core.dll 之外要包含哪些文件。该项目仅使用 WatiN.Core.dll 和 Interop.SHDocVw.dll 构建和运行。我怎么知道依赖项是什么?
非常感谢任何见解。
【问题讨论】:
标签:
visual-studio
version-control
reference
watin
【解决方案1】:
添加引用就是这样做的。它添加了一个引用,因此如果引用是您的桌面文件夹,其他开发人员将无法看到这些文件。此外,如果您删除文件,您的项目中将有悬空引用。一般来说,不要引用桌面上的文件。
按照您的建议,在与项目相同的源代码管理树中创建一个 lib 文件夹是一个更好的解决方案。 Visual Studio 会将引用存储为相对路径,使其他开发人员能够编译项目。
您必须研究 WatiN 库的文档以了解您的应用程序需要哪些文件。您不应删除 .config 文件,因为它与智能感知无关。
【解决方案2】:
我会创建一个包含所有源文件、库文件、工具、文档、资源的开发树,这样任何开发人员都可以直接从源代码管理中获得一个工作项目,而无需搜索参考。
在 lib 文件夹中引用 DLL 意味着 projectA 能够使用 DLL 的 1.0 版,而 projectB 能够使用 DLL 的 2.0 版。
构建解决方案时,它将从引用它们的位置获取 DLL。如果找不到它们,项目将无法构建。
看看下面的文章。
http://www.codeplex.com/treesurgeon
至于你需要引用哪些dll,你可以走只引用你需要的方式。
【解决方案3】:
WATiN 需要 WATiN.Core.dll 和 Interop.SHDocVw.dll 才能运行。正如其他人所建议的那样,最好在源代码控制树中为外部库创建一个 lib 文件夹,以便每个人都可以使用相对引用。
上面提到的 TreeSurgeon 是一个很好的工具,或者您至少可以使用他们的文件夹结构作为模型。
如果您将 Watin.Core.xml 文件与 dll 一起放入 bin 中,它应该会给您智能感知。
【解决方案4】:
我相信,如果您直接从 bin 文件夹中引用该文件(将其剪切并粘贴到那里),您只能删除该文件夹。如果您从文件夹中引用文件,我认为您需要将其保留在那里。
如果您引用的 dll 引用了其他 dll 中的类,您可能会在删除其他文件时遇到问题。