【问题标题】:How to know the DLLs that are impacted by a check-in in TFS 2012?如何知道受 TFS 2012 中签入影响的 DLL?
【发布时间】:2012-12-28 09:23:32
【问题描述】:

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

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

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

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

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

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

谢谢!

【问题讨论】:

标签: c# dll deployment visual-studio-2012


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢您的详细回复 MrHinsh,我会考虑一下我们的流程。
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 2012-10-21
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2013-02-13
    • 2021-01-08
    相关资源
    最近更新 更多