我们在合并.resx文件时遇到问题,并且由于设计器将自定义控件的版本放入.resx中,winform设计器无法打开窗体/控件。我希望它总是放在版本=0.0.0.0。
这就是它正在做的:
<data name=">>subPageSplitter.Type" xml:space="preserve">
<value>KSS.Common.Windows.Forms.Splitter, KSS.Common.Windows.Forms, Version=4.2.0.2445, Culture=neutral, PublicKeyToken=516e9f009179834d</value>
</data>
这就是我想要的:
<data name=">>subPageSplitter.Type" xml:space="preserve">
<value>KSS.Common.Windows.Forms.Splitter, KSS.Common.Windows.Forms, Version=0.0.0.0, Culture=neutral, PublicKeyToken=516e9f009179834d</value>
</data>
(我们的构建服务器在GlobalAssemblyInfo.cs中设置版本,并在每次构建后将其签入,这一事实于事无补!)
在合并resx文件时,如何处理WinForm设计器重新排序项目的相关问题将在这篇CodeProduct文章中介绍。
我能想到的最好的解决方案不包括停止引用,而且不是很整洁,但它应该可以缓解症状:
您可以创建一个自定义工具ResXResourceReader
/ResXResourceWriter
(或仅创建XDocument
类)来在.resx
文件上运行。您可以将其添加到文件的上下文菜单中(工具、自定义、上下文菜单下拉菜单)。然后右键单击并"修复"它(这将涉及一个宏来调用您的工具,或者您可以在宏本身中进行处理)。
您也可以使用FileSystemWatcher
来查找正在创建/修改的.resx文件,并自动运行它。如果它正在被修改,那么它应该被从源代码管理中签出,这样就不应该有任何只读问题。