【问题标题】:TFS and referenced DLLsTFS 和引用的 DLL
【发布时间】:2011-04-27 15:33:51
【问题描述】:

我们正在使用 TFS 和 VS 2010。

我一直在从事一个使用 TFS 作为源代码控制的项目。 我已经下载了很多 dll(例如 log4net)并在我的项目中引用。

当一个新程序员连接到 TFS 并让我的项目脱离源代码控制时,它无法构建,因为它说它缺少所有这些引用的 dll。

我在这里做错了什么?如何在源代码管理中包含那些引用的 DLL。 在引用它们之前,我是否需要将所有这些 dll 添加到我的项目中?当我引用它们时,我只是浏览到它们在我的文件系统上的位置。

【问题讨论】:

    标签: c# asp.net-mvc visual-studio-2010 tfs


    【解决方案1】:

    我发现第 3 方 DLL 的最佳做法是在您的 sln/proj 文件结构中创建一个“库”文件夹,并将所有必要的 DLL 复制到此本地文件夹中以供参考。您还需要确保将这些 DLL 签入源代码管理。这样,每个参与项目的人都可以得到所有 DLL 的完全相同的版本,并且引用路径也完全相同。

    在任意下载或安装位置引用第 3 方库会产生问题,因为这将要求所有开发人员为所有 DLL 维护相同的下载结构。此外,如果每个人都引用项目结构之外的 DLL,则很难保证每个人都使用相同的版本。

    另一种选择是让每个人都将 DLL 安装到 GAC 中,但这也很痛苦,尤其是在版本管理和部署方面。

    【讨论】:

    • 这有一个额外的好处,即任何开发人员(新的或其他的)都可以获取最新版本,按 F5,然后启动并运行,而无需“我从哪里获得 DLL X 或如何安装 DLL Y "
    • 我在 sln 中创建了库文件夹,当我从服务器获取项目时,我必须添加所有引用。我是不是走错路了?
    • 而不是库文件夹.. 更好地通过 NuGet 包管理器在解决方案级别进行管理。只有在这些 3rd 方 dll 无法通过 nuget 获得的情况下,我才会同意上述解决方案。
    【解决方案2】:

    我在我的项目文件夹中创建了一个“ThirdPartyDLL”文件夹,我将所有额外的 DLL 复制到其中。然后我进入源代码浏览器并将这些 DLL 添加到团队基础服务器中,这样我就可以确定我为我的应用程序的特定版本使用了正确版本的 DLL(因此其他所有人都在与我完全相同的页面上) )。

    查看 - 其他窗口 - 源代码控制资源管理器 右键单击项目文件夹 - 将项目添加到文件夹

    您将无法选择其中包含 DLL 的特定文件夹,但您可以选择文件夹中的单个 DLL 文件。然后,您将看到“ThirdPartyDLL”文件夹出现在该窗口中。

    完成此操作后,这些 dll 将位于团队基础源代码控制中。每当开发人员签入时,他们都会获得最新版本的 DLL。

    不要忘记删除应用中的旧引用并将它们更改为您的 thirdpartydll 文件夹。

    我曾经将 DLL 复制到 bin 文件夹中,但我遇到的问题是 DLL 升级时。最初,当我的项目很小的时候,这没什么大不了的。现在我创建了多个 DLL 和应用程序,因此很难在项目之外维护一致的 DLL 版本。我最好的例子是我购买的许可 dll。升级后,所有应用程序和库都需要在同一版本上。如果我忘记了一个,那么我遇到了奇怪的问题,或者应用程序刚刚停止工作。现在我将所有内容都放在一个文件夹中,我进行了一次更改,所有内容都升级了。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      Andy 的建议很好,我过去也使用过。在我目前的工作中,我们在网络共享上有一个“参考”文件夹供我们所有人构建。不过,我们这里有一个非常快速的网络,所有开发人员都在一个办公室里。如果您有很多远程开发人员或网络速度较慢,此解决方案将无法正常工作。

      【讨论】:

        【解决方案4】:

        我尝试了各种方法来处理这个问题,并决定将所需的 dll 放在 bin 文件夹中,并确保它们包含在项目中以进行源代码控制。我听说人们说这可能不是一个好主意,但没有人为此提供充分的理由,而且对我来说效果很好。

        我的第二个选择是在网络共享上开辟一些空间并在那里组织各种第 3 方 dll。您可以将文件放在带有版本号的文件夹中,以使事情保持直截了当,每个人都应该可以访问他们需要的一切,只要每个人都使用正常的网络路径作为参考。

        在项目中添加一个单独的文件夹也是可行的,但看起来很混乱,因为您最终会得到不希望包含在发布中的额外文件。

        【讨论】:

          猜你喜欢
          • 2013-08-16
          • 1970-01-01
          • 1970-01-01
          • 2016-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          • 1970-01-01
          相关资源
          最近更新 更多