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

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

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

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

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

Что не так?

+264
03 авг. '11 в 11:15
источник поделиться
36 ответов
  • 1
  • 2

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

Итак, проверьте, сделали ли вы то же самое.

Названия namespace и class должны совпадать, поскольку они являются частью частичного класса

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

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
+510
11 окт. '11 в 17:28
источник

Связанные вопросы


Похожие вопросы

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

+183
17 нояб. '11 в 16:16
источник

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

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

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

+32
14 окт. '15 в 16:14
источник

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

Я заменил

<Window x:Class="myapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

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

<RibbonWindow 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

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

+18
16 мар. '14 в 14:16
источник
  • Перейдите в каталог решений
  • Удалить папку \obj
  • Восстановить решение

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

+15
05 апр. '13 в 20:02
источник

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

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

<Import Project=…..

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

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

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

<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

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

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

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

+15
03 авг. '11 в 11:20
источник

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

<Page x:Class="Project1.Page1" ...

соответствуют имени 'Project1' и имени 'Page1

+13
08 окт. '13 в 1:13
источник

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

+12
15 февр. '12 в 15:57
источник

Вы можете получить эту ошибку при импорте класса из другого проекта или изменении пути к файлу 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 Namespace Correcting 02

+11
15 мая '16 в 22:07
источник

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

Е.Г.

<UserControl x:Class="DockPanel.TreeView" />

а код позади -

namespace NotThePanelItShouldBe
+5
29 авг. '13 в 11:29
источник

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

  • Щелкните правой кнопкой мыши проект, который вызывает проблему в обозревателе решений. Во всплывающем меню выберите: Добавить → Класс
  • Выберите кросс-платформенную страницу → Forms Xaml. Сохраните стандартное имя стандартного Page1.cs и нажмите "Добавить".
  • Обратите внимание, что предыдущая проблема InitializeComponent() исчезла по какой-то причине.
  • Удалить вновь созданный файл Page1.cs и продолжить программирование, как если бы Visual Studio работала нормально.
+4
14 сент. '16 в 21:55
источник

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

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

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

+4
09 авг. '13 в 13:56
источник

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

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

+4
15 апр. '16 в 17:06
источник

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

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

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <!--<ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>-->
  </Application.Resources>
</Application>

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

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

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

/// <summary>
/// InitializeComponent
/// </summary>
[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
}
+3
19 июн. '12 в 15:17
источник

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

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

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

+3
02 авг. '17 в 8:49
источник

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

+3
03 апр. '17 в 2:22
источник

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

+2
02 июн. '17 в 14:39
источник

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

+2
09 авг. '16 в 18:49
источник

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

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

+2
04 февр. '12 в 3:24
источник

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

"Объект запуска" (не задано)

+1
18 мар. '16 в 17:31
источник

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

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

+1
14 дек. '15 в 10:23
источник

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

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

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

+1
17 сент. '15 в 8:37
источник

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

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

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

0
27 апр. '15 в 22:41
источник

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

0
05 янв. '16 в 20:49
источник

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

0
25 июн. '14 в 17:54
источник

yeap, так много всего может быть... Я бы добавил этот... убедитесь, что App.xaml указывает на ваше пространство имен (где находится ваш файл приложения) +.App например. x: Class= "DX.App" < === убедитесь, что это приложение, а не имя главной страницы

Надеюсь, это сработает и для вас.

0
10 апр. '13 в 16:49
источник

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

0
05 июл. '13 в 12:48
источник

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

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

0
23 дек. '13 в 3:11
источник

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

0
01 мар. '15 в 17:43
источник

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

<Page Include="YourFile.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>
0
04 авг. '15 в 8:12
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос