在 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>
有意思的是,重建项目后,异常不再弹出。当然,我希望有一个比这更简单的解决方案,所以我尝试了以下想法:
- 将
TextBlockStyle.xaml
的 "Build Action" 从 "Page" 更改为 "Resource"
- 像问题"Trouble referencing a Resource Dictionary that contains a Merged Dictionary".
一样,通过向根字典添加虚拟样式来绕过 VS 的优化错误
None 但是它解决了问题。我该怎么做才能避免每次更改命令行参数时都进行重建?
以下两个步骤解决了我的问题:
从
更改程序集设置中的后备语言
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
至
[assembly: NeutralResourcesLanguageAttribute("")]
删除项目的UI文化:
<UICulture>en-US</UICulture>
也许有人可以对此进行详细说明。我不明白为什么更改命令行参数会影响查找语言资源。
我有一个工作的 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>
有意思的是,重建项目后,异常不再弹出。当然,我希望有一个比这更简单的解决方案,所以我尝试了以下想法:
- 将
TextBlockStyle.xaml
的 "Build Action" 从 "Page" 更改为 "Resource" - 像问题"Trouble referencing a Resource Dictionary that contains a Merged Dictionary". 一样,通过向根字典添加虚拟样式来绕过 VS 的优化错误
None 但是它解决了问题。我该怎么做才能避免每次更改命令行参数时都进行重建?
以下两个步骤解决了我的问题:
从
更改程序集设置中的后备语言[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
至
[assembly: NeutralResourcesLanguageAttribute("")]
删除项目的UI文化:
<UICulture>en-US</UICulture>
也许有人可以对此进行详细说明。我不明白为什么更改命令行参数会影响查找语言资源。