5

基本的に、私はこの (未回答の) 質問と同じ問題を抱えています: IOException was unhandled - Cannot locate resource app.xaml

Visual Studio 2010 でプロジェクトを開いてデバッグを開始すると、「IOException が処理されませんでした: リソース app.xaml が見つかりません」というメッセージが表示されます。プロジェクトを正常に実行するには、何らかの方法で app.xaml ファイルを変更する必要があります (空の行を追加するなど)。

追加の詳細:

  • 私のソリューションは、メイン (WPF) アプリケーションとテスト プロジェクトの 2 つのプロジェクトで構成されています。
  • ソリューションが Visual Studio 2005 から変換された場合の問題について読みましたが、これは 私の場合ではありません。私のプロジェクトはもともと Visual Studio 2010 で作成されました。おそらく (正確には思い出せませんが) .Net Framework 3.5 または .Net Framework 4.0 Client Profile を対象としていたのですが、現在は .Net Framework 4.0 で動作するように構成されています。
  • それが重要な場合、両方のプロジェクトの名前が異なります。1 つ目は MyApplicationName (アセンブリ名と既定の名前空間) と呼ばれ、2 つ目は MyApplicationName.Test (アセンブリ名と既定の名前空間も) と呼ばれます。
  • メイン プロジェクトのほとんどのクラスは内部 (ビュー クラスを含む) ですが、App クラスはパブリックです
  • メイン プロジェクトは、その内部コンポーネントをテスト プロジェクトに公開します ( を使用[assembly: InternalsVisibleTo("MyOtherProject")]) 。
  • 私は MVVM (MVVM Light を使用) を使用していますが、ViewModel の「リゾルバー」/コンテナー/ブートストラップ/MEF または関連するものは使用していません。DataTemplates を使用して ViewModels をそれぞれのビューにマップし、ViewModels を手動で作成します (問題がある場合)。
  • My App.xaml には、他の 3 つの xaml リソース ファイルが含まれています。ここに App.xaml を含めます。

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/StyleDictionary.xaml" />
                <ResourceDictionary Source="Resources/CommonResources.xaml" />
                <ResourceDictionary Source="Resources/ViewModelMappings.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
    

  • 必要に応じて、App クラスの OnStartup メソッドをオーバーライドして、起動ロジックを手動で処理します。また、MVVM Light から DispatcherHelper を初期化するための静的コンストラクターも作成しました。

        public partial class App : Application
        {
            static App()
            {
               GalaSoft.MvvmLight.Threading.DispatcherHelper.Initialize();
            }
            ...
        }
    
4

2 に答える 2

0

プロジェクトのターゲット フレームワークを変更すると、このようなことが発生する可能性があります。最初から .Net 4 を対象とする新しいアプリケーションとしてプロジェクトを再作成し、すべてのコード ファイルを既存のアイテムとして追加することができます。

もう 1 つ気になるのは、app.xaml ファイル名の大文字と小文字です。一部のコンテキストでは大文字と小文字が区別され、他のコンテキストでは大文字と小文字が区別されない可能性があるため、それを変更してみましたか? 私のシステムでは、デフォルトで App.xaml です。エラー メッセージでは app.xaml であるため、テキスト エディターでプロジェクト ファイルを大文字と小文字を区別して検索し、出現するすべての名前を App.xaml に変更することをお勧めします。

于 2012-12-09T09:13:05.230 に答える
0

これが決定的な解決策であるかどうかはわかりませんが、これまでのところ機能しているようです。

  1. csproj ファイルをメモ帳で開きます
  2. App.xaml と App.xaml.cs を検索します。このファイルへのすべての参照が同じケースであることを確認してください。ファイルは App.xaml と App.xaml.cs という名前だったので、そのように参照を残しました。

以前は、次のようなものがありました。

<Compile Include="app.xaml.cs">
  <DependentUpon>App.xaml</DependentUpon>
  <SubType>Code</SubType>
</Compile>

それで私はそれを修正しました、そして今は次のとおりです:

<Compile Include="App.xaml.cs">
  <DependentUpon>App.xaml</DependentUpon>
  <SubType>Code</SubType>
</Compile>

私が行ったもう 1 つのことは、BootstrapperPackage を探してそこから古いバージョンの .Net Framework を削除することでしたが、プロジェクトが古いバージョンの .Net に依存するライブラリを使用している場合、それは良い考えではないと思います。それも問題の原因だったかどうかはわかりません。

于 2013-09-11T16:19:02.277 に答える