【问题标题】:How do I stop the winform designer putting the version of custom controls in a .resx file?如何阻止 winform 设计器将自定义控件的版本放入 .resx 文件中?
【发布时间】:2011-09-05 10:55:12
【问题描述】:

我们遇到了合并 .resx 文件和 winform 设计器无法打开表单/控件的问题,因为设计器将自定义控件的版本放在 .resx 文件中。我希望它始终输入 Version=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 article.

【问题讨论】:

  • 您是否尝试在参考属性中将特定版本设置为 false?只是猜测,我从来没有遇到过这个问题。
  • @Neverbirth 我们使用的是项目引用,所以没有“特定版本”选项。
  • 我认为这不可能。
  • 构建服务器不够智能,无法分配 [AssemblyVersion]。他们应该只分配一个 [AssemblyFileVersion]。问题解决了。
  • @Hans,构建服务器不在我的直接控制之下

标签: .net winforms visual-studio-2010 user-controls


【解决方案1】:

我能想到的最佳解决方案不涉及停止引用,也不是很整洁,但应该可以缓解症状:

您可以创建一个自定义工具 ResXResourceReader / ResXResourceWriter(或只是 XDocument 类)来在 .resx 文件上运行。您可以将其添加到文件的上下文菜单(工具、自定义、上下文菜单下拉菜单)。然后右键单击并对其进行“修复”(将涉及一个宏来调用您的工具,或者您可以在宏本身中进行处理)。

您还可以使用FileSystemWatcher 来查找正在创建/修改的 .resx 文件,并自动运行它。如果它正在被修改,那么它应该从源代码管理中签出,所以不应该有任何只读问题。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多