Если я создаю новый проект в Visual Studio 2010 с пакетом обновления 1 (SP1) и выбираю «Приложение WPF» и пытаюсь создать сгенерированное приложение, я получаю сообщение об ошибке
Имя InitializeComponent не существует в текущем контексте.
Сегодня утром я получил похожую ошибку, когда попытался построить свой текущий проект. Вчера у меня не было проблем с его компиляцией и запуском.
Я создал новый проект и получал сообщение об ошибке при компиляции проекта. Я только что отправил проект коллеге, и он только что скомпилировал без ошибок.
Что не так?
Ответы:
Я сталкивался с этим пару раз и продолжаю забывать, что вызывает это. Я столкнулся с этим, когда переименовал пространство имен в моем коде позади файла, но не в моем XAML.
Так что проверьте, сделали ли вы то же самое.
В пространстве имен и класс имена должны совпадать , так как они являются частью частичного класса
источник
Действие Build для файла .xaml также должно быть установлено на «Страница», при перемещении файла xaml между проектами этот параметр теряется (по крайней мере, в VS 2010).
источник
Для тех , кто не имеет ошибок в режиме отладки, но делать имеют указанную ошибку в режиме выпуска (и все же проект работает отлично), вот что - то просто попробовать:
Этот метод работал для меня в VS 2015, и, по словам других пользователей, также 2017 и 2019
источник
Я столкнулся с этой ошибкой во время рефакторинга, когда я переименовал некоторые файлы / папки, и необходимо было сгенерировать прексиситирующие файлы * .g.cs.
источник
x:Class
спичкиNamespace.Class
.Для этого есть очень специфическая причина, и это в настройках проекта. Обычно это происходит всякий раз, когда вы пытаетесь добавить элемент управления / окно WPF в библиотеку классов или проекта .NET 2.0. Причиной этой ошибки является то, что проект не знает, что он создает элемент управления или окно WPF, и поэтому пытается построить его как проект C # 2.0.
Решение включает в себя редактирование файла .csproj. Щелкните правой кнопкой мыши проект, вызвавший проблему, и выберите «Разгрузить проект». Щелкните правой кнопкой мыши по незагруженному проекту и выберите «Edit .csproj». Откроется файл .csproj, и вы сможете увидеть XML. ищите следующую строку:
Это ближе к концу файла, и единственная строка, которая у вас есть, это, вероятно,
Это говорит Visual Studio, чтобы построить проект как проект .NET 2.0. Мы хотим сказать Visual Studio, что на самом деле это проект WPF, поэтому нам нужно добавить следующую строку:
Эта строка скажет Visual Studio построить проект как проект WPF. Теперь нижняя часть вашего файла .csproj должна выглядеть так:
Сохраните файл .csproj, щелкните его правой кнопкой мыши в обозревателе решений и выберите компиляцию «Обновить проект», и все, готово!
источник
это случилось со мной, когда я случайно удалил ссылку на класс из определения xaml:
Я заменил
Первая строка с этим:
Я знаю, что это не ответ на первоначальный вопрос (потому что этот проект построен на другой машине), но сообщение об ошибке было таким же, поэтому, возможно, я помогу кому-то в этой ситуации.
источник
Вы можете получить эту ошибку, когда вы импортируете класс из другого проекта или измените путь к файлу xaml или пространство имен файла xaml или позади .cs.
Первый: у него может быть пространство имен, которое не совпадает с тем, что есть в вашем новом проекте
Как вы можете видеть, пространство имен в импортированном файле начинается со старого имени проекта: «TrainerB» , но ваш новый проект может иметь другое имя, поэтому просто измените его на правильное имя нового проекта, как в файле .xaml, так и в. задний файл .cs.
Два:
измените свойства файла .xaml на:
Действие построения: встроенный ресурс
Пользовательский инструмент: MSBuild: UpdateDesignTimeXaml
источник
xaml
файла. +1Убедитесь, что в файле xaml
сопоставьте имя «Project1» и имя «Page1»
источник
Проверьте файл Designer .
У меня была такая же проблема. В моем случае причиной было то, что
namespace
for FileName.Designer.cs не соответствовал (правильный),namespace
используемый в FileName.cs .Изменение
namespace
в FileName.Designer.cs совпадающего FileName.cs немедленно решить эту проблему.источник
У меня было это (хотя это было моей большой ошибкой и было вызвано после того, как я скопировал и вставил некоторый код в); это может произойти, когда пространство имен не совпадает между XAML и кодом позади
НАПРИМЕР
и код позади
источник
Я столкнулся с этим при переименовании usercontrol. Чтобы исправить это, я закомментировал InitializeComponent, проверил, что все имена были правильными (xaml и код позади), собрал проект, раскомментировал InitializeComponent, а затем собрал снова. Похоже, что может быть несколько причин / решений для этой проблемы, но этот путь сделал это для меня.
источник
Ни один из приведенных выше ответов не работал для меня. Я перепробовал их все, кроме дубликатов. Однако по какой-то странной причине это сработало в моем кроссплатформенном проекте в Visual Studio 2015:
источник
Я согласен с ответом выше, что пространства имен должны совпадать. Тем не менее, у меня была такая проблема, когда пространства имен совпадали.
Чтобы исправить, я просто изменил пространство имен в XAML на НЕПРАВИЛЬНОЕ, сохранил, а затем изменил его обратно на ПРАВИЛЬНОЕ. Вуаля!
источник
Если вы используете формы Xamarin и перемещаете файл XAML, «действие сборки» файла изменяется. Для форм Xamarin требуется "build action = Embedded Resource".
Примените «действие сборки» в Visual Studio:
Select the XAML file -> Properties -> Build Action = Embedded Resource
источник
Я пробую все предложения выше. Если вы попытаетесь тоже безуспешно, найдите более легкий путь. Создайте новый page.xaml, затем скопируйте свой код для нового класса и удалите класс XAML с проблемами. Не трать больше времени.
источник
Выгрузите все решение, а затем снова загрузите его. Затем перестройте решение. Это решило проблему для меня.
источник
Другая распространенная причина этой ошибки - если вы что-то сделали в этом:
Щелкните правой кнопкой мыши папку в проекте, чтобы создать новый UserControl. Это создает файл класса и xaml, который получается из пользовательского контроля в пространстве имен папки.
Затем вы решаете изменить пространство имен класса, потому что вы на самом деле просто используете папки для организации кода. Атрибут x: Class не будет автоматически обновляться, поэтому он будет искать класс, который не существует. Возможно, можно использовать лучшее сообщение об ошибке, например «x: Тип класса не найден в именах bla.blaa.blaaa».
источник
Другое решение этой проблемы состоит в том, чтобы просто изменить свойство-> Build Action на XAML с Embedded Resource на что-либо другое, сохранить, а затем изменить его обратно на Embedded Resource. Ошибка уходит.
источник
Я знаю, что на это ответили по другой причине, но это очень популярное сообщение, и я столкнулся с той же проблемой с библиотекой классов. В этом случае, оказалось, что это было изменение в моем пространстве имен (ответ об этом здесь ), и что компилятор не смог перестроить Window.gics, который определяет метод InitializeComponent (). Не удалось, потому что в библиотеке классов отсутствовало значение ProjectTypeGuid для проектов WPF в файле csproj. Инструкции для этого здесь и здесь . Я думал, что поделюсь, если кто-то столкнется с той же проблемой. В этом случае недостаточно просто изменить пространство имен.
источник
Это произошло со мной, потому что программа удаления пакета Nuget уничтожила все атрибуты элемента <Application> в App.xaml. Сюда входит атрибут x: Class, который указывает имя класса приложения. Поэтому частичный класс, содержащий метод InitializeComponent (), никогда не создавался.
Я исправил проблему, вернув App.xaml в контролируемую исходным кодом копию.
источник
Это решило это для меня.
Я закомментировал ресурсы в файле App.xaml
Комментирование вернулось, чтобы исправить ошибку сборки.
Углубившись немного глубже, я обнаружил, что файл app.g.cs в {Project} \ obj \ debug содержал только следующее, когда я оставлял комментированный ресурс.
источник
Для тех, кто находит это в интернете. Проверьте файл Windows.csproj, если есть компиляция. Там должно быть 2 записи
источник
<DependentUpon>YourFile.xaml</DependentUpon>
по какой-то причине мне не хватало, и это то, что исправило это для меня!Если пространства имен верны, то также возникает та же ошибка,
Просто закройте свое приложение и откройте его снова .
Это может решить вашу проблему
источник
После некоторых действий пространство имен файла .cs и пространство в файле .xaml могут различаться (в xaml ищите x: Class = "namespace.yourType").
Исправьте их, чтобы они были одинаковыми.
источник
Я обнаружил, что «Объект запуска» был (не установлен), вызывая эту ошибку для меня.
«Объект запуска» (не задан)
источник
root
вView
каталог.Поскольку это, похоже, тема для решения проблемы отсутствия «InitializeComponent», я включу свой ответ здесь.
У меня тоже была эта проблема, и я перепробовал все, что нашел здесь и на всех других форумах, которые мог найти Google, однако ни один из них не решил эту проблему для меня. После двух часов попыток все, я наконец понял, что случилось с моей настройкой.
В нашем проекте мы используем компоненты Metro от MahApps . Представление, которое доставляло мне неприятности, было наследием от MetroWindow, например:
Теперь я определил мои статические ресурсы как
Вот как я определил ресурсы в
UserControl
s во всех других моих представлениях, поэтому я предположил, что это сработает.Это было, однако, не в случае с
Controls:MetroWindow
! Там я абсолютно нуждался в определении ресурса следующим образом:Таким образом, моя проблема, в итоге, была отсутствующей
<ResourceDictionary>
меткой. Я действительно не знаю, почему это привело к ошибке «InitializeComponent», и это странным образом даже не создавало ее на каждой моей машине, но именно так я ее исправил. Надеюсь, это поможет (оставшиеся 0,001% людей сталкиваются с этой проблемой).источник
Я только что столкнулся с этой проблемой, и оказалось, что мой проект хранится в моей пользовательской папке, которая хранится в сети, и у нас был кратковременный сбой сети. Я сделал сборку; он жаловался на то, что мои файлы были изменены вне редактора (они не изменились; блокировки файлов только что испортились), и он работал нормально, устраняя ошибку, связанную с
InitializeComponent()
методом.Кстати, если вам интересно, разработка чего-либо с сетевого диска - плохая практика. Это становится особенно проблематичным, когда вы пытаетесь использовать управляемый код .NET; по моему опыту, это бесится каждый раз, когда вы строите. Я забыл поместить этот маленький одноразовый проект в нужную папку и в итоге заплатил цену.
источник
Другое возможное объяснение - это то, что вы строите против x86. Щелкните правой кнопкой мыши свое решение и выберите Configuration Manager. Посмотрите, используете ли вы x86 вместо любого процессора.
источник
Поэтому я понимаю, что это старый вопрос, но у нас была похожая проблема. Мы смогли построить проект, используя VS2012, но не используя msbuild из командной строки. Я вошел в файл .proj и заметил, что в нем нет записи для «ProjectTypeGuids» в разделе «PropertyGroup» по умолчанию, поэтому я добавил это:
который является GUID проекта для WPF. Затем я удалил и снова добавил UserControl, и он начал работать. Я не уверен, что должен был сделать этот последний шаг, но сейчас он работает для меня.
источник
По какой-то причине после копирования .xaml и .cs между проектами действие сборки иногда меняется. Пожалуйста, убедитесь, что сборка вашего .xaml является Page.
источник