2017-01-26 21 views
0

У меня есть пользовательские элементы управления в проекте WPF. Мое решение больше не будет компилироваться. Когда я пытаюсь построить/включить после чистки/восстановления (даже после удаления папок bin и obj) VS генерирует два файла кода: control.g.vb и control.givbVisual Studio WPF, генерирующий идентичные конфликтующие файлы с частичным классом

Код в этих файлах содержит частичные классы подключен к классу codebehind, и два сгенерированных файла идентичны. Затем Visual studio определяет, что они конфликтуют друг с другом, вызывая ошибки компиляции, такие как «Public Sub InitializeComponent() имеет несколько определений с идентичными сигнатурами», которые он делает, один в control.g.vb и один в control.givb

Что происходит, как это произошло, и как я могу это исправить?

Я искал все релевантные ключевые слова, о которых я могу думать о Google, SO и MSDN. Наиболее подходящий совет, который я нашел, включал удаление файлов bin и obj, а также очищение и восстановление, которые я пробовал.

Примеры ошибок Ошибка 'Public Sub System_Windows_Markup_IComponentConnector_Connect (connectionId As Integer, target As Object)' имеет несколько определений с идентичными сигнатурами. {путь к файлу решения} \ obj \ x86 \ Debug \ Controls \ user controls {folder} {control} .g.i.vb {project}

+0

Эти файлы всегда генерируются. Если бы я сделал ставку, я бы сказал, что вы изменили пространство имен для одного или обоих ваших пользовательских элементов управления, но вы не сделали это правильно. Если бы вы это сделали, я бы предложил скопировать файлы XAML и cs для этих элементов управления в другое место вне вашего решения, создав новые версии в тех местах, где вы хотите, чтобы они существовали, а затем скопируйте минимальный минимум из каждого исходного файла в их новые версии. Это означает только копирование определений классов (без пространств имен!) И все, исключая корневой элемент в вашем XAML. Добавьте обратно только те атрибуты, которые необходимы для создания – Will

+0

. Если это не сработает, создайте новое решение, скопируйте один из ваших пользовательских элементов управления, а затем отредактируйте все, что вы можете, все еще воспроизводя проблему. Как только вы соедините его с минимальным примером, опубликуйте это в [edit]. – Will

+0

Насколько я знаю, я вообще не коснулся пространства имен. Я не пытался переместить их в новое место или что-то еще. Кроме того, у меня есть только контроль над небольшой частью одного проекта в этом решении. Если я попытаюсь проверить больше, чем для редактирования, это вызовет проблемы для других разработчиков в проекте. – Paladin852

ответ

0

Короткий ответ: будьте очень осторожны при переименовании файлов в Visual Studio.

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

 Смежные вопросы

  • Нет связанных вопросов^_^