Имя «InitializeComponent» не существует в текущем контексте

Если я создам новый проект в Visual Studio 2010 с пакетом обновления 1 и выберите «Приложение WPF» и попытается создать сгенерированное приложение, я получаю ошибку

Имя «InitializeComponent» не существует в текущем контексте.

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

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

Что не так?

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

Поэтому проверьте, сделали ли вы это.

Имена пространства имен и classов должны совпадать, поскольку они являются частью частичного classа

namespace ZZZ { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow { //... } }   

Действие сборки для .xaml-файла также должно быть установлено на «Страница», при перемещении файла xaml между проектами этот параметр теряется (по крайней мере, в VS 2010).

Для тех, кто (в VS2015) не имеет ошибок в режиме отладки, но имеет указанную ошибку в режиме деблокирования (и, тем не менее, проект работает нормально), вот что-то простое:

  1. Откройте файл XAML, соответствующий файлу xaml.cs.
  2. Сделать редактирование – любое редактирование, например, добавить место где-нибудь
  3. Сохраните файл и закройте его.

Этот метод работал для меня.

это произошло со мной, когда я случайно удалил ссылку на class из определения xaml:

Я заменил

  

первая строка с этим:

  

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

  1. Перейдите в каталог решений
  2. Удалить папку \ obj
  3. Восстановить решение

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

Для этого есть очень конкретная причина, и она находится в настройках проекта. Это обычно происходит, когда вы пытаетесь добавить элемент управления WPF / окно в библиотеку или проект classа .NET 2.0. Причина этой ошибки заключается в том, что проект не знает, что он создает элемент управления WPF или окно и поэтому пытается построить его как проект C # 2.0.

Решение включает в себя редактирование файла .csproj. Щелкните правой кнопкой мыши на проекте, вызывающем проблему, и выберите «Выгрузить проект». Щелкните правой кнопкой мыши выгруженный проект и выберите «Изменить .csproj». Откроется файл .csproj, и вы увидите XML. найдите следующую строку:

  

Это ближе к концу файла, и единственная строка, которая у вас есть, вероятно,

  

Это говорит Visual Studio, что проект будет реализован как проект .NET 2.0. Мы хотим сказать, что Visual Studio это проект WPF, поэтому мы должны добавить следующую строку:

  

Эта строка сообщит Visual Studio, что проект будет реализован как проект WPF. Теперь ваше дно файла .csproj должно выглядеть так:

   

Сохраните файл .csproj, щелкните его правой кнопкой мыши в обозревателе решений и выберите «Перезапустить проект», и все, все готово!

Убедитесь, что в файле xaml

  

совпадают с именем «Project1» и именем «Page1»

Я столкнулся с этим, переименовывая usercontrol. То, как я исправил это, – это прокомментировать InitializeComponent, убедиться, что все имена были правильными (xaml и код позади), построить проект, раскомментировать InitializeComponent, а затем снова построить. Похоже, что может возникнуть пара причин / решений для этой проблемы, но этот способ сделал это для меня.

Вы можете получить эту ошибку при импорте classа из другого проекта или изменении пути к файлу xaml или в пространстве имен файла xaml или за .cs.

Один: у него может быть пространство имен, которое не совпадает с тем, что у вас есть в вашем новом проекте

 namespace TrainerB.MVC.Forms { public partial class AboutDeveloper : ContentPage { public AboutDeveloper() { InitializeComponent(); } } } 

Как вы видите, пространство имен в импортированном файле начинается со старого имени проекта: «TrainerB» , но ваш новый проект может иметь другое имя, поэтому просто измените его на правильное имя нового проекта в файле .xaml и за .cs-файлом.

Два:

измените свойства файла .xaml на:

Действие сборки: встроенный ресурс

Пользовательский инструмент: MSBuild: UpdateDesignTimeXaml

Свойства файла Xaml

Исправление пространства имен Xaml 01

Исправление пространства имен Xaml 02

У меня это было (хотя это была моя ошибка и осталась после того, как я скопировал и вложил код); это может произойти, когда пространство имен не совпадает между XAML и кодом позади

НАПРИМЕР

  

и код позади

 namespace NotThePanelItShouldBe 

Ни один из вышеперечисленных ответов не работал для меня. Я попробовал их всех, кроме дубликатов. Однако по какой-то странной причине это работало в моем кросс-платформенном проекте в Visual Studio 2015:

  1. Щелкните правой кнопкой мыши проект, который вызывает проблему в обозревателе решений. Во всплывающем меню выберите: Добавить -> Класс
  2. Выберите кросс-платформенную страницу -> Forms Xaml. Сохраните стандартное имя страницы1.cs и нажмите «Добавить».
  3. Обратите внимание, что предыдущая проблема InitializeComponent () исчезла по какой-то причине.
  4. Удалите вновь созданный Page1.cs и продолжайте программирование, как если бы Visual Studio работала нормально.

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

Чтобы исправить это, я просто изменил пространство имен в XAML на INCORRECT, сохраненный, а затем изменил его на CORRECT. Вуаля!

Выгрузите все решение, а затем снова загрузите его. Затем перестройте решение. Это решило проблему для меня.

Другой распространенной причиной этой ошибки является то, что вы сделали что-то в этом:

  1. Щелкните правой кнопкой мыши по папке в проекте, чтобы создать новый UserControl. Это создает файл classа и xaml, который выводится из пользовательского элемента управления в пространстве имен папки.

  2. Затем вы решили изменить пространство имен classа, потому что на самом деле вы просто используете папки для организации кода. Атрибут x: Class не будет автоматически обновляться, поэтому он будет искать class, который не существует. Возможно, лучше использовать сообщение об ошибке, подобное «x: Тип classа не может быть найдено в namesace bla.blaa.blaaa».

Я пробую все предложения выше. Если вы попробуете слишком без успеха, получите более простой способ. Создайте новый page.xaml, затем скопируйте свой код для нового classа и удалите class XAML с проблемами. Не трать больше времени.

Если вы используете Xamarin Forms, и вы перемещаете файл XAML, «действие сборки» файла изменяется. Xamarin Forms требует «build action = Embedded Resource».

Применить «действие сборки» в Visual Studio:

Select the XAML file -> Properties -> Build Action = Embedded Resource

Это произошло со мной, потому что деинсталлятор пакета Nuget сдул все атрибуты элемента в App.xaml. Это включает атрибут x: Class, который определяет имя classа приложения. Таким образом, неполный class, содержащий метод InitializeComponent (), никогда не генерировался.

Я исправил проблему, вернув App.xaml в исходную копию.

Это решило это для меня.

Я прокомментировал ресурсы в файле App.xaml

      

Комментирование thiis назад для исправления ошибки сборки.

          

Копая немного глубже, я обнаружил, что файл app.g.cs в {Project} \ obj \ debug содержал только следующее, когда я оставил комментируемый ресурс.

 ///  /// InitializeComponent ///  [System.Diagnostics.DebuggerNonUserCodeAttribute()] public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Uri resourceLocater = new System.Uri("/MyApp;component/app.xaml", System.UriKind.Relative); #line 1 "..\..\..\App.xaml" System.Windows.Application.LoadComponent(this, resourceLocater); #line default #line hidden } 

Еще одно решение этой проблемы – просто изменить свойство-> Build Action на XAML из Embedded Resource на что-нибудь еще, сохранить, а затем изменить его обратно на Embedded Resource. Ошибка исчезнет.

Если Пространства имен верны, то также есть одна и та же ошибка,

Просто закройте приложение и откройте его снова .

Это может решить вашу проблему

После некоторого действия пространство имен файла .cs и файла в .xaml может быть другим (в xaml найдите x: Class = “namespace.yourType”).

Исправьте их, чтобы они были одинаковыми.

Я обнаружил, что «Объект запуска» был (не установлен), вызвав эту ошибку для меня.

«Объект запуска» (не задан)

Поскольку это, похоже, относится к теме о недостатке «InitializeComponent», я включу свой ответ здесь.

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

В нашем проекте мы используем компоненты Metro от MahApps . Представление, которое вызывало у меня проблемы, было видом, наследующим от MetroWindow, следующим образом:

  

Теперь я определил свои статические ресурсы как

   ...  

Вот как я определил ресурсы в UserControl s во всех моих других представлениях, так что я предполагаю, что это сработает.

Это было, однако, не в случае с Controls:MetroWindow ! Там мне абсолютно необходимо определение ресурса следующим образом:

    ...   

Таким образом, моя проблема, в общем, отсутствовала . Я действительно не знаю, почему это вызвало ошибку InitializeComponent, и это странно даже не производило ее на каждой моей машине, но я это исправил. Надеюсь, что это поможет (оставшиеся 0.001% людей сталкиваются с этой проблемой).

У меня была та же проблема: ожидайте, что я переустановил мой MainWindow xaml и cs в новый файл, а затем скопировал их обратно в исходное место. Затем я получил эту ошибку после попытки скомпилировать приложение WPF.

То, что я сделал, чтобы исправить эту ошибку, было переименовать пространство имен (из egNamespace -> egNamespaceNew, и оно снова сработало. Затем я изменил пространство имен на исходное.

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

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

Кстати, если вам интересно, разработка чего-то с сетевого диска – это плохая практика. Это становится особенно проблематичным, когда вы пытаетесь использовать управляемый код .NET; по моему опыту, он волнуется каждый раз, когда вы строите. Я забыл положить этот маленький проект выброса в правильную папку и в итоге заплатил цену.

Для тех, кто находит это в Интернете. Проверьте файл Windows.csproj, если существует компиляция. Должно быть 2 записи

  Designer MSBuild:Compile   YourFile.xaml  

Еще одно возможное объяснение заключается в том, что вы строите против x86. Щелкните правой кнопкой мыши свое решение и выберите Configuration Manager. Посмотрите, строите ли вы против x86 вместо Any CPU.

Поэтому я понимаю, что это более старый вопрос, но у нас была аналогичная проблема. Мы смогли построить проект с использованием VS2012, но не используя msbuild из командной строки. Я зашел в файл .proj и заметил, что у него нет записи для «ProjectTypeGuids» в разделе «PropertyGroup» по умолчанию, поэтому я добавил следующее:

 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

который является GUID проекта для WPF. Затем я удалил и снова добавил UserControl, и он начал работать. Я не уверен, должен ли я сделать этот последний шаг, но теперь он работает для меня.

По какой-то причине после копирования .xaml и его .cs между проектами, действие сборки иногда меняется. Пожалуйста, убедитесь, что для сборки вашего .xaml используется страница.

  • Водяной знак / текст подсказки / заполнитель TextBox
  • Получить активный цвет автоматической цветовой темы Windows 8
  • Создание WPF BitmapImage из MemoryStream png, gif
  • Как выполнить выбор флажка «Однократный щелчок» в WPF DataGrid?
  • Как сохранить состояние управления в элементах табуляции в TabControl
  • Цвет переднего плана Progressbar
  • Уведомлять ObservableCollection при изменении позиции
  • Команды вызова WPF через события
  • WPF эквивалент TextRenderer
  • Ширина столбца DataGrid не обновляется автоматически
  • Динамическое обновление содержимого TabControl во время выполнения
  • Давайте будем гением компьютера.