保持DLL最新的方法

时间:2009-05-27 10:44:52

标签: dll filesystems dependencies

我最近加入了一家公司,这家公司多年来为他们提供了不同质量的工作。

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

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

总结过程:

  1. 编译所有项目和 解决方案都在根文件夹中。
  2. 查找并更新所有其他副本 输出文件。
  3. 重新编译所有内容并找出答案 什么打破。
  4. 更新源代码并进行更新 引用。
  5. 问题的步骤是2。

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

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

4 个答案:

答案 0 :(得分:8)

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

  

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

     

文件引用是直接引用   组装;你用它来创建它们   “添加引用”的“浏览”选项卡   对话框。项目到项目   引用是对项目的引用   包含组件;你创造它们   使用Add的Project选项卡   参考对话框。

     

项目到项目的优势   参考是它创建了一个   中的项目之间的依赖关系   构建系统,所以依赖项目   如果它已经改变,将被建立   最后一次引用项目   被建。文件引用没有   创建一个构建依赖,所以它是   可以构建引用   没有建立依赖项目的项目   项目,参考可以成为   过时的(也就是说,项目可以   引用先前构建的版本   该项目)。这可能导致   单个DLL的几个版本   bin目录中需要哪个   不可能。当这场冲突   发生时,你会看到一条消息,如   警告:依赖项'文件'   项目'项目'无法复制到   运行目录,因为它会   覆盖引用'file。'。

     

您应该避免添加文件   引用另一个的输出   项目在同一解决方案中,   因为这样做可能会导致编译   错误。而是使用“项目”选项卡   添加引用对话框的   创建项目到项目的引用   在同一解决方案中。这使得   允许团队开发更容易   为了更好地管理班级   您在项目中创建的库。   有关更多信息,请参阅   故障参考和故障排除   如何:创建和删除项目   的依赖关系。

来自here

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

您是否可以在包含但未真正包含的项目中添加后构建步骤以将DLL转储到预先安排的位置?从那里,您可以在依赖项目中添加预构建步骤,以从该位置获取新的DLL。绝对不是最佳实践,但它应该完成工作。

答案 3 :(得分:2)

更简单的方法是创建一个包含所需项目的解决方案,修改它们之间的引用以使用项目引用,更改项目以使其输出文件夹都指向同一目录,然后设置项目引用以便“复制本地”设置为false。

然后您需要做的就是构建解决方案(在VS中或通过msbuild在命令行上)。

构建结果将是一个文件夹,其中包含您需要的所有文件,并且每个项目始终都有最新的引用。