在修改app.xaml之前找不到'app.xaml',IOException

Dan*_*tro 5 c# wpf visual-studio-2010

基本上我遇到了与此(未答复)问题相同的问题:IOException未处理 - 无法找到资源app.xaml

当我在Visual Studio 2010中打开我的项目并开始调试时,我得到"IOException未处理:找不到资源app.xaml".重建解决方案不起作用,我必须以某种方式修改我的app.xaml文件(例如添加一个空行),以便成功运行我的项目.

额外细节:

  • 我的解决方案包括两个项目:My main(WPF)应用程序和测试项目.
  • 如果解决方案是从Visual Studio 2005转换而来,我已经阅读了有关问题的内容.这 不是我的情况.我的项目最初是使用Visual Studio 2010创建的.也许(我没有完全提醒)它曾经是针对.Net Framework 3.5或.Net Framework 4.0 Client Profile,但它目前配置为与.Net Framework 4.0一起使用
  • 如果这很重要,两个项目都有不同的名称.第一个称为MyApplicationName(程序集名称和默认名称空间),第二个称为MyApplicationName.Test(程序集名称和默认名称空间)
  • 我的主项目中的大多数类都是内部的(包括View类),但我的App类是公共的
  • 主项目将其内部组件暴露给测试项目(使用[assembly: InternalsVisibleTo("MyOtherProject")])
  • 我正在使用MVVM(使用MVVM Light),但我没有使用ViewModel'解析器'/ container/bootstrapper/MEF或相关的东西.我只是使用DataTemplates将我的ViewModel映射到各自的视图,并手动创建我的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>
    
    Run Code Online (Sandbox Code Playgroud)

  • 如果重要的话,我会从我的App类重写OnStartup方法来手动处理启动逻辑.我还在那里写了一个静态构造函数来从MVVM Light初始化DispatcherHelper:

        public partial class App : Application
        {
            static App()
            {
               GalaSoft.MvvmLight.Threading.DispatcherHelper.Initialize();
            }
            ...
        }
    
    Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果您需要更多详细信息,请告诉我.

Dan*_*tro 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>
Run Code Online (Sandbox Code Playgroud)

所以我修改了它,现在是:

<Compile Include="App.xaml.cs">
  <DependentUpon>App.xaml</DependentUpon>
  <SubType>Code</SubType>
</Compile>
Run Code Online (Sandbox Code Playgroud)

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