C # копировать, вставить форму в проекте Visual Studio - PullRequest
7 голосов
/ 12 февраля 2010

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

Я копирую, затем вставляю его в свой проект и переименовываю из Copy of Original .cs в NewItem.cs.

Когда я перестраиваю свое решение, я получаю ошибку .

The item "obj\Debug\Control.Forms.NewUser.resources" was specified more
than once in the "Resources" parameter.  
Duplicate items are not supported by the "Resources" parameter.

Что я делаю не так? Есть ли способ решить проблему?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2010

Возможно, у вас есть локальный ресурс, который хранится в файле с именем Original.resx

Когда вы копировали диалог, он копировал этот файл, но не переименовывал его (хотя этого не должно происходить). Проверьте, есть ли у вас файл .resx под копией Original.cs в обозревателе решений. Если это так, переименуйте это тоже.

Возможно, в любом случае стоит выполнить очистку (щелкните правой кнопкой мыши проект или решение), чтобы очистить папки obj и bin, а затем попробуйте перекомпилировать.

2 голосов
/ 10 июля 2012

Старый вопрос, но я отвечу для будущих гуглеров, так как ОП утверждал, что принятый ответ не решил проблему.

Проблема в том, что NewItem.cs по-прежнему содержит класс с тем же именем, что и Original.cs. Это происходит, когда имя файла и имя класса различаются (в отличие от Eclipse для Java, Visual Studio допускает это в проектах C #). При вставке копий к имени файла добавляется префикс «Копировать», а функция переименования файла недостаточно интеллектуальна, чтобы понять, что переименование класса будет уместным в таком случае.

Чтобы исправить ошибку, класс в дублированном элементе проекта должен быть переименован. Я говорю элемент вместо файла, потому что в случае материала WinForms это означает два файла: один, который отображается в обозревателе решений по умолчанию (щелкните правой кнопкой мыши -> показать код или F7, если вас приветствует визуальный дизайнер) и файл .designer.cs. Нет необходимости изменять .resx AFAIK.

0 голосов
/ 25 июня 2011

Когда вы создаете копию оригинальной формы, VS не изменяет оригинальное пространство имен (в вашем случае это все еще «Оригинал»). Итак, просто измените это дублированное пространство имен (в «Копии оригинала») на нечто уникальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...