c# - 是否在 C# 项目中包含外部 DLL

标签 c# dll project external

我们的项目有很多外部 DLL,其中大部分(但不是全部)都是第 3 方 DLL。

目前我们的项目中没有包含这些 DLL。它们包含在 SVN 中,并提供了我们构建输出目录的路径。因此,在构建我们的项目之后,由于 SVN,必要的文件就在那里,但项目本身并不知道它们。

我的感觉是,我们应该在项目的根目录下有一个名为 Dependancies 或 ThirdParty 的文件夹,其中包含所有 DLL,并将它们的构建事件设置为复制到输出目录。它们也会存在于 SVN 中,但与项目具有相同的结构,而不是在构建输出目录中。

项目本身仅引用这些 DLL 之一,称为 CommunicationProc.DLL。 CommunicationProc.DLL 然后引用所有其他 DLL。我们有许多 DLL 来支持不同类型的 radio 。因此,并非所有的 DLL 都会被使用,但可以根据 radio 类型使用其中的任何一个。

关于 DLL 是否应该包含在项目中,我们内部有不同意见,一些团队认为它们应该只包含在 SVN 中,而不是项目本身的一部分。

请注意,这不是 .NET DLL,大多数是旧的 C DLL。

公认的做法是什么?有人可以就是否将它们包含在项目中还是仅包含 SVN 以一种或另一种方式向我提供令人信服的论据吗?

最佳答案

最好将它们放在源代码管理的文件夹中,然后在生成事件时将它们复制到调试文件夹。这样你就可以管理他们的版本。如果某个 dll 的更新版本出现,那么您可以替换旧版本并在 checkin 时添加一些评论。此外,如果您在团队中工作,那么无需将文件从调试文件夹复制到每个团队成员,您可以让每个团队成员使用来自源代码管理的同一组 dll。如果您正在开发一些控件并希望您的客户使用该控件,那么您可以更轻松地在某些地方拥有一组相关的 dll,以便您可以将它们与您的 .Net dll 一起提供给您的客户。
我对一些非托管 dll 也有同样的问题,最终将它们放在一个文件夹中,以便所有团队成员都拥有相同版本的 dll。希望这可以帮助。

关于c# - 是否在 C# 项目中包含外部 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419252/

相关文章:

c# - 我应该为整数对使用什么数据结构?

.net - 我的团队成员添加了对第三方 DLL 的引用并进行了 checkin ...现在我无法构建

java - maven中排除关键字

c# - 将程序集加载到 AppDomain 但出现无法加载文件或程序集异常

c# - 选择 MS Dynamics CRM 中的前 10 条记录

c# - 如何向我的表单动态添加按钮?

c# - U3D-如何在 Mac 上以单声道启用 System.Data?

c# - 在不同 dll 的接口(interface)上调用带有 ImmutableArray<> 的方法时抛出 System.MissingMethodException

SVN项目结构

Eclipse 总是运行所有项目 - 我怎样才能只运行一个项目?