У меня есть пользовательские элементы управления в проекте 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}
Эти файлы всегда генерируются. Если бы я сделал ставку, я бы сказал, что вы изменили пространство имен для одного или обоих ваших пользовательских элементов управления, но вы не сделали это правильно. Если бы вы это сделали, я бы предложил скопировать файлы XAML и cs для этих элементов управления в другое место вне вашего решения, создав новые версии в тех местах, где вы хотите, чтобы они существовали, а затем скопируйте минимальный минимум из каждого исходного файла в их новые версии. Это означает только копирование определений классов (без пространств имен!) И все, исключая корневой элемент в вашем XAML. Добавьте обратно только те атрибуты, которые необходимы для создания – Will
. Если это не сработает, создайте новое решение, скопируйте один из ваших пользовательских элементов управления, а затем отредактируйте все, что вы можете, все еще воспроизводя проблему. Как только вы соедините его с минимальным примером, опубликуйте это в [edit]. – Will
Насколько я знаю, я вообще не коснулся пространства имен. Я не пытался переместить их в новое место или что-то еще. Кроме того, у меня есть только контроль над небольшой частью одного проекта в этом решении. Если я попытаюсь проверить больше, чем для редактирования, это вызовет проблемы для других разработчиков в проекте. – Paladin852