【发布时间】:2012-09-29 00:29:09
【问题描述】:
在我的工作场所,我们仅通过替换已更改的程序集(不是我的想法)来部署内部应用程序。
我们可以通过查看编译到程序集中的源文件是否已更改来判断我们需要部署哪些程序集。大多数时候,我们不需要重新部署依赖于已更改程序集的程序集。但是我们发现了一些情况,即使程序集中的源文件没有更改,我们也需要重新部署它。
到目前为止,我们知道程序集中的任何这些更改都需要重新编译和部署所有依赖程序集:
- 不断变化
- 枚举定义更改(值顺序)
- 函数的返回类型发生变化,调用者使用 var(有时)
- 类的命名空间更改为另一个已引用的命名空间。
还有其他我们遗漏的案例吗?我也愿意争论为什么整个方法存在缺陷(尽管它已经使用了多年)。
编辑明确地说,我们总是重新编译,但只部署其中源文件已更改的程序集。
因此,任何破坏编译的东西都会被拾取(方法名称更改等),因为它们需要更改调用代码。
【问题讨论】:
-
重新编译这么慢,值得这么头痛吗?我至少会在依赖程序集的公共接口发生任何变化时重新编译。
-
我认为,为了安全起见,您应该在进行更改后重新编译所有内容。但我完全基于直觉。
-
一切都重新编译,但只部署更改的程序集。
-
如果你已经重新编译,那么你可以简单地检查编译的程序集是否改变了。
-
@CodeInChaos 假设我可以比较程序集,我将如何可靠地做到这一点?程序集可能会因许多不重要的原因而发生变化,包括源在磁盘上的位置。