自动生成visual studio个项目但修改一个参考

automatically regenerate visual studio projects but ammend a reference

这个问题可能太宽了但是...

我有 300 个项目(比如 project1_v1.sln、project2_v1.sln...)都依赖于 1 个 class 库(比如 classLib_v1.sln),我们每 3 个月需要对 class 库(接口和实现)做一个小的修改,这会破坏一些项目,然后你修复这些项目并部署....讨厌....

但是....

与其修改现有项目,不如将它们重新生成为新的 "branched" 版本....

so...clone classLib1.sln做classLib2.sln修改,然后重新生成project1_v1.sln,变成project1_v2.sln,引用classLib2而不是 classLib1.....编译....并修复。

即每个项目都有 2 个版本。

感觉像是某种自动化的 "production line" 产品。

我们确实使用了 TFS,但是我们的版本控制是非常线性的,所以我不是特别知道如何在不造成混乱的情况下处理这样的事情。

想法?


有几个有用的回复,但要明确一点,这不是要避免破坏性更改,代码会破坏,而是要自动执行(引用的)更改,然后使用该自动化来告诉我们密码在哪里损坏。

依赖注入已经被认为是一种解决方案,可以使用,但是你仍然需要自动更改配置,缺点是可配置的DI不是类型安全的,所以编译器不能不再告诉你哪里出了问题。

如果更新接口导致重建,并且目标不是针对现有消费者进行新更改的重建,那么不应更改导致重建的现有接口。

如果提供了新功能,则应创建一个新界面,该界面可以继承作为基础的公共界面,甚至可以继承以前的界面;因此只会向新消费者展示新功能。

这可以使用依赖注入来完成,而不是一直重新编译代码,你依赖一个 xml 配置,这样你就不需要每次依赖项改变时都重新编译代码.但请注意,在您添加新功能或方法而不是删除或重命名您使用的功能或方法之前,这将一直有效。

以下是与您有同样问题的问题之一。

Dependency Injection - Choose DLL and class implementation at runtime through configuration file

现在,还有一件事。 tfs 有一个持续集成过程的选项,您可以利用它,因为您应该是 tfs 的管理员。您可以指定门控签入选项,以在更改代码时避免崩溃。这是文档 Gated Check-in

现在你可以为你所有的项目在 tfs 上添加一个触发器,如果​​它们指向一个特定的文件夹来监控该文件夹的变化,如果有人签入了依赖 dll 或项目的变化存储在那里,然后您可以在 tfs 上启动自动构建,以查看该特定项目是否正确编译或未使用该新依赖项。

最后我认为这是一个关于 CI 和源代码控制(不是软件架构、DI 和任何其他类似的东西)的问题,有时,不可避免地你必须应用一个破坏某些东西的改变(除非你不不要将您的代码与任何抽象结合起来....并使用 CTRL C 来共享行为!)。

所以答案是...研究如何使用 sourcecontrol 和 CI 对一系列应用程序进行开发、UAT 和生产版本