【发布时间】:2014-02-07 04:52:29
【问题描述】:
Visual Studio 中的许多自动生成的 .Designer 文件都包含一个样板,如下所示。
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.18052
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
默认情况下,我们总是将这些设计器文件签入源代码管理。事实证明这与Microsoft's recommendation 一致:“自定义工具在设计时而不是在构建时运行,因此需要将依赖文件检入源代码控制”。不幸的是,那里的大多数 SO 问题都询问是否应该签入这些设计器文件 (for example),而忽略了不断变化的运行时版本的问题以及它对源代码控制的影响。
Dan Brackett 在this question 中谈到了这个问题,只是他的问题是针对将所有开发人员同步到同一版本的解决方案。这似乎是一项令人生畏的任务,特别是正如所引用问题的响应者所指出的那样,承包商会参与其中。有趣的是,Dan 还认为这在 VS 2010 中不再是问题。但是,在 VS 2012 中似乎是一个问题。也许有一个配置值可以将其关闭?
当多个开发人员(每个都有不同的 .Net 版本)使用更新的运行时版本签入这些自动生成的文件时,这是一个挑战。这为他们修复了它,但随后其他开发人员显示过时/更改的文件。
一种选择是允许文件保持过时状态而不签入更改,但这会使开发人员难以信任项目或文件的源代码控制状态。
另一种选择是使用您的源代码控制软件忽略它们,但这些文件确实会合法更改,并且忽略它们可能会丢失重要更新或错过将有效更改签回存储库的风险。
我们还有其他选择吗?
更新:为了进一步澄清,我们不希望开发人员针对不同的 .Net 版本,例如 3.5 和 4.0。我们关心的不是版本的“4.0.30319”部分,而是随着 Windows 和 Visual Studio 的自动更新而发生变化的最后一个维护部分。
【问题讨论】:
-
这是一个不常见的问题。周围没有多少开发商店让他们的开发人员随意安装更新。拥有一个纳粹 IT 人员是有好处的。
-
@HansPassant 听到这个消息真是令人惊讶。我从未听说过 IT 人员参与安装的 .Net 版本。我可以想象,buildmaster 会有话要说。无论哪种方式,我关心的不是版本的“2.0.50727”部分,而是随着 Windows 和 Visual Studio 的自动更新而发生变化的最后一个维护部分。我会更新问题以澄清这一点。
-
当然,这是随着安全和服务版本更新而改变的。通过 Windows 更新分发的那种。 IT 人员使用 WSUS 向客户推送更新。
标签: .net visual-studio version-control