我最近加入了一家公司,这家公司多年来为他们提供了不同质量的工作。
已创建的项目依赖于其他项目的输出。 但是,不是以正常方式创建依赖项并维护代码,而是将DLL从一个地方复制到另一个地方并从那里引用。
是否有一种简单的方法可以将父文件夹下的所有DLL更新到整个文件夹范围内的最新版本(按时间戳)?
总结过程:
问题的步骤是2。
(我很清楚这可能会破坏东西)
我正在使用Visual Studio 2005和C#来创建DLL,但我想更新文件而不是代码。
答案 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在命令行上)。
构建结果将是一个文件夹,其中包含您需要的所有文件,并且每个项目始终都有最新的引用。