基本上我遇到了与这个(未回答的)问题相同的问题:IOException was unhandled - Cannot locate resource app.xaml
当我在 Visual Studio 2010 中打开我的项目并开始调试时,我得到“IOException was unhandled: Cannot locate resource app.xaml”。重建解决方案不起作用,我必须以某种方式修改我的 app.xaml 文件(例如添加一个空行)才能成功运行我的项目。
额外细节:
- 我的解决方案包含两个项目:我的主 (WPF) 应用程序和一个测试项目。
- 如果解决方案是从 Visual Studio 2005 转换的,我已经阅读了有关问题的信息。这 不是我的情况。我的项目最初是使用 Visual Studio 2010 创建的。也许(我没有确切提醒)它有时针对 .Net Framework 3.5 或 .Net Framework 4.0 客户端配置文件,但它目前配置为与 .Net Framework 4.0 一起使用
- 如果重要的话,两个项目都有不同的名称。第一个称为 MyApplicationName(程序集名称和默认命名空间),第二个称为 MyApplicationName.Test(程序集名称和默认命名空间)
- 我的主项目中的大多数类都是内部的(包括 View 类),但我的 App 类是公共的
- 主项目将其内部组件暴露给测试项目(使用
[assembly: InternalsVisibleTo("MyOtherProject")]
) - 我正在使用 MVVM(带有 MVVM Light),但我没有使用 ViewModel 'resolver'/container/bootstrapper/MEF 或相关的东西。我只是使用 DataTemplates 将我的 ViewModels 映射到它们各自的视图并手动创建我的 ViewModels(如果这很重要)。
我的 App.xaml 包括其他三个 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(); } ... }