Изменение автоматически сгенерированного кода в проекте приложения Windows Forms на C # - PullRequest
2 голосов
/ 24 сентября 2010

Когда вы открываете новый проект C # Windows Forms Application в Visual Studio 2008, вы получаете много автоматически сгенерированного кода (AssemblyInfo.cs, Resources.Designer.cs, Settings.Designer.cs, Form1.Designer.cs, Form1.resx, Program.cs).

Помимо добавления компонентов из Toolbox в Form1.cs [Design] и кода в Form1.cs, какие файлы вы можете изменить?И как?И какие файлы следует оставить как есть?

PS: Насколько я могу судить, это обширная тема.Я не ожидаю исчерпывающего ответа.Подойдет любая информация, которой вы хотите поделиться.Я также хочу упомянуть, что я новичок в C # и хочу только самую основную информацию.

PPS: Если вы думаете ответить на «Поиск в Интернете» или что-то в этом роде, не делайте этого.Я искал в Интернете и буду делать это снова и снова, пока не найду ответы, которые ищу.Я нашел некоторую полезную информацию, но я чувствую, что мне нужно больше.Я думаю, что, вероятно, я получу это на stackoverflow.com.


Обновление 1: на этот вопрос был дан ответ.Я пометил ответ от sh_kamalh как принятый.Я хотел бы также отметить ответы Дэвида и Ганса Пассанта как принятые, но я не думаю, что вы можете отметить более одного ответа как принятый.Или вы можете?

Из того, что я могу извлечь из ответов, вы никогда не должны изменять автоматически сгенерированный код в проекте C # Windows Forms Application в Visual Studio 2008. Однако я не все понимаю в ответах,и, возможно, что-то упустил.

Если вы не согласны с приведенным выше изложением или ответами ниже, не стесняйтесь добавлять противоречивый ответ.Или, если у вас есть ответ, который дополняет ответы ниже, не стесняйтесь добавлять этот ответ.Я уверен, что есть еще что сказать по этому вопросу.


Обновление 2: Кажется, вы также можете написать свою собственную версию проекта приложения C # для Windows Forms (см. Ответ Davids ниже, который я забыло том, когда я написал "Обновление 1").Похоже, вам следует начать с нуля, если вы это сделаете.

Ответы [ 3 ]

6 голосов
/ 24 сентября 2010

автоматически сгенерированные файлы:

  • AssemblyInfo.cs: атрибуты внутри него устанавливаются с помощью Project + Properties, вкладки приложения, кнопки информации о сборке. Прямое редактирование файла - это нормально, IDE не так легко запутается.

  • Settings.Designer.cs: автоматически генерируется из файла Settings.settings, который, в свою очередь, создается в конструкторе настроек. Любые изменения в этом файле будут быстро потеряны.

  • Resources.Designer.cs: автоматически генерируется из файла Resources.resx, который, в свою очередь, генерируется из конструктора ресурсов. Любые изменения в этом файле будут быстро потеряны.

  • Форма .Designer.cs: автоматически создается конструктором форм. Редактирование этого файла возможно, нет независимого файла, в котором хранится макет формы. Представление конструктора создается путем запуска этого кода во время разработки и использования Reflection для восстановления свойств формы и элемента управления. И сохраняется снова при закрытии конструктора, он заново генерирует Метод InitializeComponent и управляющие переменные. Чтобы сохранить изменения в вашем коде, чтобы выжить, этот процесс требует написания кода точно так, как это сделал бы сам дизайнер. Что довольно нетривиально, когда вы вносите изменения помимо простых изменений значений свойств. Существует также значительный риск, неразумное изменение может легко вызвать исключение. Когда это происходит во время разработки, вы получаете печально известный WSOD (White Screen Of Darn), который отображает часто очень загадочное исключение и говорит, что вы больше не можете создавать свою форму.

Вы можете узнать больше о том, как дизайнер генерирует код, наблюдая за изменениями, которые он вносит в InitializeComponent, когда вы изменяете форму в конструкторе. Понимание этого, безусловно, не является материалом для начинающих, вам, вероятно, придется учиться более неотложным вещам, пока вы осваиваете программирование на .NET. Дизайнеры призваны сделать вашу жизнь проще и свести к минимуму риск ошибиться.

3 голосов
/ 24 сентября 2010

Почему вы хотите изменить автоматически сгенерированные файлы?
В случае форм вам не следует изменять файлы .Designer.cs или .resx, потому что они будут создаваться при каждом изменении формы, поэтому любые изменения, которые вы делаете, будут перезаписаны при следующей регенерации кода.
Если вы хотите что-то изменить в Designer.cs, вы можете сделать это изменение в исходном файле cs, потому что класс помечен как частичный, что означает, что код из файлов Form1.cs и Form1.Designer.cs объединяется для создания окончательный код.
Если вы хотите добавить свои ресурсы, добавьте файл ресурсов и оставьте созданный файл .resx без изменений. Для AssemblyInfo.cs вы можете изменить общую информацию о сборке.

Короче говоря, просто оставьте сгенерированные файлы без изменений.

3 голосов
/ 24 сентября 2010

Большинство этих файлов являются шаблонными, и вы можете изменить их включение в новый проект и то, что содержится в файлах.Вы даже можете создавать свои собственные шаблоны для новых типов проектов или элементов.http://msdn.microsoft.com/en-us/magazine/cc188697.aspx

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

...