保持DLL最新的方法

Mar*_*rst 4 filesystems dll dependencies

我最近加入了一家公司,这家公司多年来为他们提供了不同质量的开发人员.

已创建的项目依赖于其他项目的产出.但是,不是以正常方式创建依赖关系并维护代码,而是将DLL从一个地方复制到另一个地方并从那里引用.

有没有一种简单的方法可以将父文件夹下的所有DLL更新到整个文件夹范围内的最新版本(按时间戳)?

所以这个过程总结如下:

  1. 在根文件夹中编译所有项目和解决方案.
  2. 查找并更新输出文件的所有其他副本.
  3. 重新编译所有内容,找出哪些内容.
  4. 更新源代码并更新引用.

问题的步骤是2.

(我很清楚这可能会破坏东西)

我正在使用Visual Studio 2005和C#来创建DLL,但我想更新文件而不是代码.

Mit*_*eat 8

Microsoft最佳实践建议是尽可能引用项目而不是DLL.

项目到项目参考和文件参考

文件引用是对程序集的直接引用; 使用"添加引用"对话框的"浏览"选项卡创建它们.项目到项目引用是对包含程序集的项目的引用; 您可以使用"添加引用"对话框的"项目"选项卡创建它们.

项目到项目引用的优点是它在构建系统中的项目之间创建依赖关系,因此,如果自上次构建引用项目以来它已经发生更改,则将构建依赖项目.文件引用不会创建构建依赖项,因此可以在不构建依赖项目的情况下构建引用项目,并且引用可能会过时(即,项目可以引用以前构建的项目版本).这可能导致bin目录中需要单个DLL的多个版本,这是不可能的.发生此冲突时,您将看到一条消息,例如警告:项目"项目"中的依赖项"文件"无法复制到运行目录,因为它会覆盖引用"文件".

您应避免在同一解决方案中向另一个项目的输出添加文件引用,因为这样做可能会导致编译错误.而是使用"添加引用"对话框的"项目"选项卡在同一解决方案中创建项目到项目引用.通过允许更好地管理您在项目中创建的类库,这使团队开发更容易.有关更多信息,请参阅对已损坏的引用进行故障诊断以及如何:创建和删除项目依赖项.

这里开始.

  • 我有一个类似的问题Micth.我喜欢引用项目而不是DLL.但是我的项目是VS2008,捐赠项目是VS2003.当我试图参考项目时,VS希望将它们转换为2008年.捐赠项目仍在VS2003中积极开发,因此转换到2008年不是一种选择.我考虑为每个捐赠者DLL创建一个重复的VS2008项目.但这会导致存在这些DLL的两个版本,一个由VS2003生成,另一个由VS2008生成.我相信这最终会增加混乱. (3认同)

tha*_*att 5

有时项目到项目的引用不起作用.例如,项目的构建时间,或者希望多个项目依赖于引用的特定构建,或者是否已完成对引用项目的测试,并且您不想再次测试.

如果您有持续集成系统和版本控制,那么另一种方法是将构建的dll签入到版本控制中作为CI构建的一部分.然后将dll(例如svn中的外部)引用到依赖项目,这应该意味着所有dll都保持最新.