如何阻止winform设计器将自定义控件的版本放入.resx文件中



我们在合并.resx文件时遇到问题,并且由于设计器将自定义控件的版本放入.resx中,winform设计器无法打开窗体/控件。我希望它总是放在版本=0.0.0.0。

这就是它正在做的:

<data name="&gt;&gt;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="&gt;&gt;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文件,并自动运行它。如果它正在被修改,那么它应该被从源代码管理中签出,这样就不应该有任何只读问题。

最新更新