2

我目前正在为一家公司做一个大项目,但我被困住了。我们使用 TFS 2012,我们有几个分支(Dev => Main => pre-prod => prod)。

当一个项目处于生产阶段时,如果出现错误,我们会做一个补丁。这意味着我们只提供受错误更正影响的 DDL。

为此,负责纠正错误的开发人员签入他的代码,并给我变更集编号,这样我就可以知道哪些文件受到签入的影响,并推断出需要交付的 dll。

我的问题就在这里,由于变更集编号,我如何知道这些 DLL 名称?我目前正在解析所有 .csproj,并且正在查看变更集日志中的文件是否存在于 csproj 中。如果是,那么我正在寻找 AssemblyName(它给了我 DLL 的名称)。

但这对我不利,因为我将其解析为字符串,它不可靠且不进化。

如果你有更好的方法(或者甚至已经写过的东西:))请去吧;)

谢谢 !

4

2 回答 2

0

实际上,您应该部署所有 DLL 而不仅仅是 Diff。如果您的应用程序有许多单独的组件,那么最好只部署一个组件,但您需要有具体的接口才能使其工作。

实现您所说的最佳方法是使用构建服务器同时创建所有 DLL。从 TFS 到 Cruse Control 和 Hudson,有很多选择,但它们都创建了您软件的特定“构建”。这将包含部署新版本软件包所需的所有文件(无论您喜欢什么),并确保在您的每个阶段中,一切都可以像推送构建一样协同工作,而无需重新编译或更改 DLL门(开发、测试、QA、PreProd)并投入生产。

当您修复一个错误时,即使它只包含一个 DLL,您也应该部署所有 DLL,因为众所周知它们可以在该包中一起工作。

这不是通过分支或变更集可以解决的问题。你需要构建...

于 2013-01-01T18:44:40.877 回答
0

我的应用程序确实有很多组件。

问题是某些 DLL 在多个组件中。事实上,它们并不是绝对独立的。

此外,应用程序中有 2 个主要积木(由许多小积木组成):Launcher + AppFabric。Launcher 是客户端应用程序,而 AppFabric 是服务器端应用程序。我的目标是只部署自上次构建以来发生变化的砖块。

所以我的问题是:不管 DLL 在哪里,你有什么建议部署这个应用程序,因为这意味着从头开始并解析所有 .csproj 等......?

仅供参考:我正在部署的应用程序重量约为 175Mo(10 个开发人员 + 5 个功能),这是一个非常大的项目,现在已经开发了 6 年。

于 2013-01-03T10:20:05.433 回答