Как мне остановить дизайнера winform, помещающего версию пользовательских элементов управления в файл .resx?

#.net #winforms #visual-studio-2010 #user-controls

#.net #winforms #visual-studio-2010 #пользовательские элементы управления

Вопрос:

Мы получаем проблемы как с объединением файлов .resx, так и с тем, что дизайнер winform не может открыть форму / элементы управления из-за того, что дизайнер поместил версию пользовательских элементов управления в файлы .resx. Я бы хотел, чтобы он всегда указывал Version = 0.0.0.0.

Это то, что он делает:

 <data name="amp;>amp;>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="amp;>amp;>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 и проверяют его после каждой сборки, не помогает!)

Связанная с этим проблема, связанная с тем, как справиться с переупорядочиванием элементов WinForm designer при объединении resx-файлов, рассматривается в этой статье CodeProduct.

Комментарии:

1. Вы пытались установить для конкретной версии значение false в ссылочных свойствах? Просто предположение, у меня никогда не было этой проблемы.

2. @Neverbirth мы используем ссылки на проекты, поэтому опции «Конкретная версия» нет.

3. Я не думаю, что это возможно.

4. Серверы сборки недостаточно умны, чтобы назначить [AssemblyVersion]. Они должны назначить только [AssemblyFileVersion]. Проблема решена.

5. @Hans, сервер сборки не находится под моим прямым контролем

Ответ №1:

Лучшее решение, которое я могу придумать, не предполагает остановки ссылки и не очень аккуратно, но оно должно облегчить симптомы:

Вы могли бы создать пользовательский инструмент ResXResourceReader / ResXResourceWriter (или просто XDocument классы) для работы с .resx файлами. Вы могли бы добавить его в контекстное меню для файлов (Инструменты, Настройка, выпадающее контекстное меню). Затем щелкните правой кнопкой мыши и «исправьте» это (потребуется макрос для вызова вашего инструмента, или вы могли бы выполнить обработку в самом макросе).

Вы также могли бы использовать FileSystemWatcher для поиска создаваемых / изменяемых файлов .resx и запускать его автоматически. Если он изменяется, то его следует извлечь из системы управления версиями, поэтому проблем с доступом только для чтения быть не должно.