在 VS2012 中更改命令行参数后无法定位资源

Cannot Locate Resource After Changing the Command Line Arguments in VS2012

我有一个工作的 C# 程序,它需要一组命令行参数才能启动。我的问题是,当我更改 Visual Studio 2012 (VS) 和 运行 应用程序的项目设置中的参数时,启动后不久就会抛出 XamlParseException

System.Windows.Markup.XamlParseException:
'Set property 'System.Windows.ResourceDictionary.Source' threw an exception.'
---> System.IO.IOException: Cannot locate resource 'theme/textblockstyle.xaml'.
...
at MyAssembly.View.MainWindow.InitializeComponent()
at MyAssembly.View.MainWindow..ctor()

"missing" 资源在 MainWindow.xaml 中引用,与给定的命令行参数无关:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MyAssembly;component/Theme/TextBlockStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

有意思的是,重建项目后,异常不再弹出。当然,我希望有一个比这更简单的解决方案,所以我尝试了以下想法:

None 但是它解决了问题。我该怎么做才能避免每次更改命令行参数时都进行重建?

以下两个步骤解决了我的问题:

  • 更改程序集设置中的后备语言

    [assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]

    [assembly: NeutralResourcesLanguageAttribute("")]

  • 删除项目的UI文化:

    <UICulture>en-US</UICulture>

也许有人可以对此进行详细说明。我不明白为什么更改命令行参数会影响查找语言资源。