5

基本上我遇到了与这个(未回答的)问题相同的问题: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();
            }
            ...
        }
    
4

2 回答 2

0

当您更改项目的目标框架时,可能会发生这样的事情。您可以将项目重新创建为从一开始就以 .Net 4 为目标的新应用程序,并将所有代码文件添加为现有项目。

想到的另一件事是 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>

我做的另一件事是查找 BootstrapperPackage 并从那里删除旧版本的 .Net Framework,但如果您的项目使用依赖于旧版本 .Net 的库,我认为这不是一个好主意。我不确定这也是导致问题的原因。

于 2013-09-11T16:19:02.277 回答