442

Visual Studio 2010 SP1 で新しいプロジェクトを作成し、[WPF アプリケーション] を選択して、生成されたアプリケーションをビルドしようとすると、エラーが発生します。

「InitializeComponent」という名前は、現在のコンテキストには存在しません。

今朝、現在のプロジェクトをビルドしようとしたときに、同様のエラーが発生しました。昨日、コンパイルと実行に問題はありませんでした。

新しいプロジェクトを作成しましたが、プロジェクトをコンパイルするたびにエラーが発生しました。プロジェクトを同僚に送信したところ、エラーなしでコンパイルされました。

なにが問題ですか?

4

47 に答える 47

832

私はこれに数回遭遇しましたが、何が原因であるかを忘れ続けています。XAML ではなくコード ビハインド ファイルの名前空間の名前を変更したときに、これに遭遇しました。

だから、あなたが同じことをしたかどうかを確認してください。

名前空間クラス名は両方とも部分クラスの一部であるため、一致する必要があります

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

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
于 2011-10-11T17:28:59.093 に答える
268

プロジェクト間で xaml ファイルを移動すると、この設定が失われます (少なくとも VS 2010 では)。

于 2011-11-17T16:16:18.663 に答える
146

デバッグ モードではエラーが発生ず、リリース モードでは特定のエラーが発生する (それでもプロジェクトは正常に実行される) 場合は、次の簡単な方法を試してみてください。

  1. 問題のある xaml.cs ファイルに対応する XAML ファイルを開きます。
  2. 編集を行う - どこかにスペースを追加するなど、任意の編集を行います
  3. ファイルを保存して閉じます

この方法はVS 2015で機能し、他のユーザーによると、2017年と2019年も機能しました

于 2015-10-14T16:14:19.917 に答える
40
  1. ソリューション ディレクトリに移動します。
  2. \obj フォルダーを削除します。
  3. ソリューションを再構築する

一部のファイル/フォルダーの名前を変更したリファクタリング中にこのエラーが発生し、既存の *.g.cs ファイルを再生成する必要がありました。

于 2013-04-05T20:02:35.567 に答える
27

これには非常に具体的な理由があり、それはプロジェクトの設定にあります。これは通常、WPFコントロール/ウィンドウを.NET2.0クラスライブラリまたはプロジェクトに追加しようとするたびに発生します。このエラーの理由は、プロジェクトがWPFコントロールまたはウィンドウを構築していることを認識していないため、C#2.0プロジェクトとして構築しようとするためです。

解決策には、.csprojファイルの編集が含まれます。問題の原因となっているプロジェクトを右クリックし、「プロジェクトのアンロード」を選択します。アンロードされたプロジェクトを右クリックして、「Edit.csproj」を選択します。.csprojファイルが開き、XMLが表示されます。次の行を探します。

<Import Project=…..

それはファイルの終わり近くにあり、あなたが持っている唯一の行はおそらく

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

これは、プロジェクトを.NET2.0プロジェクトとしてビルドするようにVisualStudioに指示します。私たちがやりたいのは、これが実際にはWPFプロジェクトであることをVisual Studioに伝えることなので、次の行を追加する必要があります。

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

この行は、プロジェクトをWPFプロジェクトとしてビルドするようにVisualStudioに指示します。これで、.csprojファイルの下部は次のようになります。

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

.csprojファイルを保存し、ソリューションエクスプローラーで右クリックして、[プロジェクトの再読み込み]コンパイルを選択します。これで、すべて完了です。

于 2011-08-03T11:20:42.050 に答える
22

これは、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">

これは元の質問に対する回答ではないことはわかっていますが (そのプロジェクトは別のマシンでビルドされているため)、エラー メッセージは同じだったので、この状況で誰かを助けることができるかもしれません。

于 2014-03-16T14:16:46.137 に答える
19

別のプロジェクトからクラスをインポートしたり、xaml ファイルのパスを変更したり、xaml または背後の .cs ファイルの名前空間を変更したりすると、このエラーが発生することがあります。

1:新しいプロジェクトにある名前空間とは異なる名前空間を持つ可能性があります

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

ご覧のとおり、インポートされたファイルの名前空間は古いプロジェクト名"TrainerB"で始まりますが、新しいプロジェクトは別の名前になっている可能性があるため、.xaml ファイルと両方で正しい新しいプロジェクト名に変更してください。後ろの .cs ファイル。

二:

.xaml ファイルのプロパティを次のように変更します。

ビルド アクション:埋め込みリソース

カスタム ツール: MSBuild:UpdateDesignTimeXaml

Xaml ファイルのプロパティ

Xaml 名前空間の修正 01

Xaml 名前空間の修正 02

于 2016-05-15T22:07:16.870 に答える
16

私はこれを経験しました(ただし、それは私のせいで、コードをコピーして貼り付けた後に発生しました)。XAML とコード ビハインドの間で名前空間が一致しない場合に発生する可能性があります。

例えば

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

コードビハインドは

namespace NotDockPanel
于 2013-08-29T11:29:38.480 に答える
13

ユーザーコントロールの名前を変更しているときにこれが発生しました。私が修正した方法は、InitializeComponentをコメントアウトし、すべての名前が正しいことを確認し(xamlとコードビハインド)、プロジェクトをビルドし、InitializeComponentのコメントを解除してから、再度ビルドすることでした。この問題にはいくつかの原因/解決策があるようですが、この方法で私はそれを行いました。

于 2012-02-15T15:57:20.957 に答える
13

上記の答えはどれもうまくいきませんでした。重複したものを除いてすべて試しました。ただし、いくつかの奇妙な理由により、これは Visual Studio 2015 のクロスプラットフォーム プロジェクトで機能しました。

  1. ソリューション エクスプローラーで、問題の原因となっているプロジェクトを右クリックします。ポップアップ メニューで次の項目を選択します。 [追加] --> [クラス]
  2. クロスプラットフォーム --> Forms Xaml Page を選択します。Page1.cs 標準名のままにして、[追加] をクリックします。
  3. 前の InitializeComponent() 問題が何らかの理由で消えたことに注目してください。
  4. 新しく作成した Page1.cs を削除し、Visual Studio が正常に動作しているかのようにプログラミングを続けます。
于 2016-09-14T21:55:33.303 に答える
6

この問題の別の解決策は、XAML のプロパティ -> ビルド アクションを埋め込みリソースから別のものに変更し、保存してから、埋め込みリソースに戻すことです。エラーはなくなります。

于 2016-08-09T18:49:59.200 に答える
5

名前空間が正しい場合、同じエラーもあります。

アプリケーションを閉じて、もう一度開いてください

これで問題が解決する場合があります

于 2015-09-17T08:37:05.440 に答える
4

これは、Nuget パッケージ アンインストーラーが App.xaml の <Application> 要素のすべての属性を吹き飛ばしたために発生しました。これには、アプリケーション クラス名を指定する x:Class 属性が含まれていました。そのため、InitializeComponent() メソッドを含む部分クラスは生成されませんでした。

App.xaml をソース管理されたコピーに戻すことで問題を修正しました。

于 2012-02-04T03:24:35.090 に答える
4

これは別の原因で回答されたことは知っていますが、これは非常にヒットした投稿であり、クラス ライブラリで同じ問題に遭遇しました。この場合、名前空間の変更 (回答はこちらの投稿)と、コンパイラが InitializeComponent() メソッドを定義する Window.gics を再構築できなかったことが判明しました。クラス ライブラリの csproj ファイルで WPF プロジェクトの ProjectTypeGuid 値が欠落していたため、実行できませんでした。この手順については、こちらこちらをご覧ください。他の誰かが同じ問題に遭遇した場合に備えて共有すると思いました。この場合、名前空間を変更するだけでは不十分です。

于 2018-03-29T14:42:54.163 に答える
3

ネットで見つけた方へ。コンパイルが存在する場合は、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>
于 2015-08-04T08:12:41.997 に答える
3

これは、'InitializeComponent' の欠落に関する問題の主なスレッドのように思われるため、ここに私の回答を含めます。

私もこの問題を抱えていました。ここで見つけたすべてのものと、Google が見つけた他のすべてのフォーラムで試しましたが、問題を解決するものはありませんでした。あらゆることを 2 時間試した後、ようやくセットアップの何が問題なのかを突き止めました。

このプロジェクトでは、MahApps のMetro コンポーネントを使用しています。問題を起こしていたビューは、次のような MetroWindow から継承したビューでした。

<Controls:MetroWindow x:Class="ProjectNamespace.MyView"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      ... >

これで、静的リソースを次のように定義しました

<Controls:MetroWindow.Resources>
    <prop:Resources x:Key="LocalizedStrings"/>
    ...
</Controls:MetroWindow.Resources>

UserControlこれが、他のすべてのビューで s のリソースを定義した方法であり、それが機能すると想定していました。

しかし、そうではありませんでしたControls:MetroWindow! そこでは、次のようにリソース定義が絶対に必要でした。

<Controls:MetroWindow.Resources>
    <ResourceDictionary>
        <prop:Resources x:Key="LocalizedStrings"/>
        ...
    </ResourceDictionary>
</Controls:MetroWindow.Resources>

つまり、私の問題は、要約すると、<ResourceDictionary>タグの欠落でした。これが「InitializeComponent」エラーを生成した理由は本当にわかりませんが、奇妙なことに、私のすべてのマシンでエラーが生成されることさえありませんでしたが、それが私が修正した方法です。これが役に立てば幸いです (残りの 0.001% の人がこの問題に遭遇しています)。

于 2016-11-29T14:59:24.747 に答える
3

これで解決しました。

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>

もう少し深く掘り下げると、{Project}\obj\debug の app.g.cs ファイルには、リソースをコメントしたままにしておくと、次のものが含まれているだけであることがわかりました。

/// <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
}
于 2012-06-19T15:17:48.660 に答える
3

この問題は、「WPF アプリケーション プロジェクト」を作成し、そのビルド ターゲットを「クラス ライブラリ」に変更して別のプログラムで外部ツールとして使用するときに発生しました。

Windows のすべての .xaml ファイルを変更して、ビルド アクションが「ページ」に設定されるようにしました。私が気付いていなかったのは、プロジェクトに「App.xaml」と「App.xaml.cs」も含まれていたことです。

"App.xaml" も "Page" に設定するか、("App.xaml.cs" と共に) 全体を削除する必要があります。ファイルが役に立たないことに気付いたので、前者を実行し、次に後者を実行しました。

于 2016-04-28T17:27:52.893 に答える
3

何らかのアクションの後、.cs ファイルの名前空間と .xaml ファイルの名前空間が異なる場合があります (xaml で x:Class="namespace.yourType" を探します)。

同じになるように修正してください。

于 2015-12-14T10:23:36.657 に答える
2

これは古い質問だと思いますが、同様の問題がありました。VS2012 を使用してプロジェクトをビルドすることはできましたが、コマンド ラインから msbuild を使用することはできませんでした。.proj ファイルを調べたところ、デフォルトの「PropertyGroup」セクションの下に「ProjectTypeGuids」のレコードがないことに気付いたので、これを追加しました。

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

これは、WPF のプロジェクト GUID です。次に、UserControl を削除して再度追加すると、機能し始めました。その最後のステップを実行する必要があるかどうかはわかりませんが、今はうまくいきます。

于 2015-04-27T22:41:19.487 に答える
2

この問題が発生したばかりで、プロジェクトがネットワーク上に保存されているユーザー フォルダーに保存されていることが判明し、ネットワークが一時的に停止しました。私はビルドを行いました。私のファイルがエディターの外で変更されたと不平を言いました(変更されていませんでした。ファイルロックが壊れただけです)InitializeComponent()。メソッドに関するエラーを削除して、正常にビルドされました。

ところで、ご参考までに、ネットワーク ドライブから何かを開発するのは悪い習慣です。.NET のマネージ コードを利用しようとすると、特に問題になります。私の経験では、ビルドするたびにびっくりします。この小さな使い捨てプロジェクトを適切なフォルダーに入れるのを忘れてしまい、代償を払うことになりました。

于 2015-06-18T22:59:56.453 に答える
2

別の考えられる説明は、x86 に対してビルドしているということです。ソリューションを右クリックし、[構成マネージャー] を選択します。Any CPU ではなく x86 に対してビルドしているかどうかを確認します。

于 2015-10-01T12:58:06.543 に答える
2

私の場合、プロジェクト内に間違った参照がありましたが、それは報告されていません。

参照が正しいと意図されていたとしても、すべての参照を読むことで問題を解決しました。

于 2016-01-13T09:42:00.277 に答える
1

プロジェクト内のフォルダーを右クリックして、私にとって問題だった新しい UserControl を作成します。フォルダーの外に同じコントロールを作成しましたが、それだけです。

于 2015-03-01T17:43:40.157 に答える
1

私の場合、プログラムのインスタンスはすでにバックグラウンドで実行されていました。実行中のインスタンスを停止し、プログラムが正常にビルドされました。

于 2018-11-20T08:45:47.663 に答える
0

私は同じ問題を抱えていましたが、私の場合、これは役に立ちませんでした。私の状況では、私が持っていたすべての WPF プロジェクト (新しく作成されたプロジェクトを含む) がこのエラーでコンパイルを停止しました。最終的に、すべての .Net フレームワークをアンインストールしてから再インストールすると、再び機能し始めました。Visual Studio の再インストールも行いましたが、影響はありませんでした。

于 2013-07-05T12:48:31.033 に答える
0

同じ問題がありました。共有プロジェクトをポータブル クラス ライブラリに変換する必要がありました。

于 2014-06-25T17:54:02.760 に答える
0

ええ、非常に多くのことができます...私はこれを追加します... App.xamlが名前空間(アプリファイルがある場所) + .Appなどを指していることを確認してください。x:Class="DX.App" <=== これがメイン ページ名ではなくアプリであることを確認してください

これがあなたにとってもうまくいくことを願っています。

于 2013-04-10T16:49:29.147 に答える