我们的项目有很多外部 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/