【问题标题】:Sorting designer code on save保存时对设计器代码进行排序
【发布时间】:2014-07-09 11:48:50
【问题描述】:

在 Visual Studio 设计器中打开表单时,生成的设计器文件的内容会随机混合。这包括文件

  • Form.Designer.cs 和
  • Form.resx

当使用版本控制系统时,这真是一场噩梦。 有没有办法(扩展?)在保存之前对所有设计器文件进行排序和清理?这将解决我与 WinForms 的大部分 VCS 相关问题,因为它逆转了设计师所做的所有改组。

【问题讨论】:

  • 什么意思?这些是代码生成的文件 - 修改它们可能会破坏您的表单。
  • 重新排列声明的顺序会如何破坏代码?
  • 你可能会破坏设计师
  • 不,它不会破坏任何东西。设计者不关心其生成代码中的任何顺序(无论如何这都没有意义)。

标签: c# winforms visual-studio


【解决方案1】:

这个问题确实让合并变得困难 - 我理解你的痛苦。

阅读之前的 SO 帖子: "Why does C# designer-generated code (like Form1.designer.cs) play havoc with Subversion?"

基本上,您可以创建一个工具来按字母顺序对所有代码进行排序,以便对代码的随机放置进行排序,但这是一种 hack,本身可能会带来很多麻烦。我个人建议改变你的工作习惯以减少这种情况的发生。

  • 减少合并之间的时间
  • 一次只允许 1 个开发人员访问表单。
  • 在进行更改的开发人员的指导下进行合并,因为他们会更好地了解什么看起来不错。
  • 不要打开设计器,如果您只是进行“代码更改”,即视觉上没有任何变化。
  • 如果您 100% 确定没有更改任何内容,请在合并前撤消对设计器文件的更改。

【讨论】:

  • IMO 所有好建议。特别是对于“一次只能访问 1 个开发人员”。我从 VSS(甚至 TFS)中学到了一个艰难的方法,即允许对具有 UI 组件的东西进行多次签出比它的价值更麻烦。
  • @DeanOC,我完全同意,合并可能很麻烦。曾几何时,我曾经广泛使用区域,但我很快就放弃了,因为它们有时真的搞砸了合并。
  • 你说得对,遵守这些规则会让事情变得更好。但这仍然很烦人。有时事情会出错,因为有人忘记遵守规则;-) 所以我希望有一个自动化的、防弹的解决方案。
  • 有人知道现在在 Visual Studio 2017 中是否有一些开箱即用的解决方案?
【解决方案2】:

这不是关于自动排序 Form.Designer.cs 的技巧;但是,它确实有助于避免 Visual Studio 对 Form.Designer.cs 文件所做的所有修改的合并帮助。

代替(或除此之外)changing your work practicesJonathon Lee),特别是限制“一次只允许 1 个开发人员访问表单”:

在进行真正的更改之前,确保 Form.Designer.cs 文件根据 Visual Studio 在单独的提交中进行组织。

  • 通过 Visual Studio 触发 Form.Designer.cs 文件的重组
    (对我来说,将控件从 TableLayoutPanel 中的一个单元格移动到另一个单元格并再次返回就可以了。)
  • 提交 Visual Studio 的更改并将其标记为未更改。
  • 对表单进行修改
  • 触发 Visual Studio 对 Form.Designer.cs 文件的重组
  • 提交您的更改并描述您的工作。

结果:

  • 这有助于审阅者区分对审阅的更改与噪音。
  • 这简化了合并:
    • 要么,您的版本控制系统检测到两个提交具有相同的效果,一个就足够了,它可以合并而不会发生冲突;
    • 或者,您可以通过仅应用一个清理提交并丢弃另一个来手动解决冲突。

【讨论】:

  • 这一切都很好,但说真的,在经历了近 20 年的同样严重破坏之后,有人应该也可以将 MS 踢进他们的公司来解决这个问题。它真的很烦人,完全没有必要。
猜你喜欢
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2011-07-20
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多