23

開始しようとしている単純な 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」クラスを設定しました。

何が道に迷っているのですか?

4

11 に答える 11

37

ありがとう@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> 要素にあったようです。3.5 SP1 で利用可能な「クライアント プロファイル」を利用するボックスをチェックすると、Visual Studio 2008 がそれを追加したので、私は混乱しました。

ボックスのチェックとチェック解除についていじくり回した後、次のような構成ファイルになりました。

<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 の要素の順序が重要な理由はわかりませんが、重要なようです。

于 2008-09-12T07:51:05.803 に答える
11

行末に「*」が追加されているなど、App.configファイルに誤りがあると、エラーが発生する可能性があります。*...</startup>...</startup>*

于 2013-01-24T02:25:32.043 に答える
8

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

于 2008-09-12T07:25:52.463 に答える
2

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

于 2016-09-22T15:02:28.770 に答える
2

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

于 2017-09-08T22:36:31.313 に答える
0

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

于 2009-06-18T10:48:51.700 に答える
0

私は同様の状況に遭遇しました。1週間探した後、解決策を見つけ、本当にうまくいきました. 同じ問題が原因で発生する2〜3の問題を解決しました。

次の手順に従います: レジストリで WPF キー (存在しない) を確認します: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Presentation Foundation 私の問題は、レジストリに上記のキーが存在しないことが原因でした。

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Presentation Foundation] @="WPF v3.0.6920.1453" "Version"="3.0.6920.1453" "WPFReferenceAssembliesPathx86"="C:\ Program Files\Reference Assemblies\Microsoft\Framework\v3.0\" "WPFCommonAssembliesPathx86"="C:\Windows\System32\" "InstallRoot"="C:\Windows\Microsoft.NET\Framework\v3.0\WPF\ " "InstallSuccess"=dword:00000001 "ProductVersion"="3.0.6920.1453" "WPFNonReferenceAssembliesPathx86"="C:\Windows\Microsoft.NET\Framework\v3.0\WPF\"

私はそれがうまくいくと確信しています。

ではごきげんよう。

よろしく、

ウメッシュ

于 2010-05-20T16:59:33.137 に答える