WPF アプリケーションの起動時に TypeInitializationException が発生して失敗する

StackOverflow https://stackoverflow.com/questions/58425

  •  09-06-2019
  •  | 
  •  

質問

起動しようとしている単純な WPF アプリケーションがあります。私は Microsoft のパターンとプラクティス「WPF の複合アプリケーション ガイダンス」に従っています。彼らの指示に従いましたが、WPF アプリケーションは「TypeInitializationException」ですぐに失敗します。

InnerException プロパティは、「'System.Windows.Navigation.BaseUriHelper' の型初期化子が例外をスローした」ことを示します。

これが私のapp.xamlです:

<Application x:Class="MyNamespace.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>         
    </Application.Resources>
</Application>

そして、これが私の app.xaml.cs (「public App()」でスローされる例外)です。

public partial class App : Application
{
    public App()
    {
        Bootstrapper bootStrapper = new Bootstrapper();
        bootStrapper.Run();
    }
}

プロジェクトのスタートアップオブジェクトとして「App」クラスを設定しました。

何が道に迷っているのでしょうか?

役に立ちましたか?

解決

ありがとう@ima、あなたの答えは私に正しい方向を示してくれました。app.config ファイルを使用していましたが、これには次の内容が含まれていました。

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" sku="Client"/>
  </startup>
  <configSections>
    <section name="modules" type="Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile="Modules/MyNamespace.Modules.ModuleName.dll" moduleType="MyNamespace.Modules.ModuleName.ModuleClass" moduleName="Name"/>
  </modules>
</configuration>

<startup> 要素を削除するとアプリケーションが正常に動作したため、問題は <startup> 要素にあったようです。Visual Studio 2008 では、3.5 SP1 で利用可能な「クライアント プロファイル」を利用するためのチェック ボックスをオンにすると、そのことが追加されたため、混乱しました。

チェックボックスをオンにしたりオフにしたりして、最終的に次のような構成ファイルになりました。

<configuration>
  <configSections>
    <section name="modules" type="Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile="Modules/MyNamespace.Modules.ModuleName.dll" moduleType="MyNamespace.Modules.ModuleName.ModuleClass" moduleName="Name"/>
  </modules>
  <startup>
    <supportedRuntime version="v2.0.50727" sku="Client"/>
  </startup>
</configuration>

どっちが効くんだよ!

app.config 内の要素の順序がなぜ重要なのかはわかりませんが、重要なようです。

他のヒント

何か問題がある場合は、 アプリの構成 ファイルのタイプミスなどのエラーが発生する可能性があります。 * 行末、例えば ...</startup> 行末に「*」が追加されています ...</startup>*.

.config ファイルを使用しますか?その場合は、エラーがないか確認してください。このような種類の初期化エラーは、無効な XML によって引き起こされることがよくあります。XAML にエラーがない場合は、まず XML 構成を確認します。

InnerExceptions を深く追跡すると、次のエラーが見つかる場合があります。

"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element"

この順序の変更は、Visual Studio EntityFramework ウィザードが connectionStrings 要素を先頭に追加した後に発生しました。

TypeInitializationException だけが表示され、理由も問題の詳細も表示されない場合は、Visual Studio のオプションで [マイ コードのみ] を無効にします。

私の場合、アプリの設定を別のアプリケーションから app.config の「userSettings」という新しいセクションにコピーしました。ただし、「userSettings」を定義する「configSections」も app.config に追加する必要があります。userSettings セクションを削除し、アプリ設定を編集して保存しました。正しい "userSettings" と "configSections" が存在しない場合、VS は自動的にそれらを作成します。

「モジュール」という名前の 2 つのセクションがあります。両方のモジュール定義を「modules」という名前の 1 つのセクションに配置します。

私も同様の状況に遭遇しました。1 週間探した結果、解決策が見つかり、それが私にとって本当に役に立ちました。同じ問題によって発生する2〜3の問題を解決しました。

次の手順を実行します:レジストリ内の WPF キー (存在しない) を確認します。hkey_local_machine software microsoft netフレームワークセットアップ ndp v3.0 setup setup windowsプレゼンテーション基礎私の問題は、上記の上記のキーがレジストリに存在しないためです。

レジストリ内の次の詳細を変更して使用できます。(実際にはファイルに保存したり、レジストリにインポートしたりすることもできます)

hkey_local_machine software microsoft netフレームワークセットアップ ndp v3.0 setup setup windows presention Foundation] @= "wpf v3.0.6920.1453" "バージョン" = "3.0.6920.1453"プログラムファイル参照アセンブリ Microsoft Framework v3.0 "" wpfcommonassembliespathx86 "=" c: windows "" installroot "=" c: windows microsoft.net framework v3.0 wpf wpf "" installsuccess "= dword:00000001" productversion "=" 3.0.6920.1453 "" wpfnonReferenceasspathx86 "=" c: windows microsoft.net framework v3.0 wpf "

きっとうまくいくと思います。

ではごきげんよう。

よろしく、

ウメッシュ

私の場合、これを追加する必要があります:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

App.config のセクション (VS 2015 .NET 4.5.2)

以前にビルドした WPF プロジェクトを開き、ビルドを確認して OK であれば、両方のプロジェクトの App.config を確認して比較します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top