基本的に、私はこの (未回答の) 質問と同じ問題を抱えています: 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(); } ... }