Spo*_*ook 1 c# wpf resources localization
我在子项目的本地化资源方面遇到问题。
\n主项目(称为 Z)使用子项目(称为 ProjectsModule),子项目有自己的资源。子项目有两个资源文件:
\nStrings.resx\nStrings.pl-PL.resx\nRun Code Online (Sandbox Code Playgroud)\n应用程序正在调试模式下运行,并以波兰语作为当前 UI 区域性。
\n我遇到以下异常:
\nSystem.Windows.Markup.XamlParseException: \'Operacja podawania warto\xc5\x9bci elementu \n\xe2\x80\x9eSystem.Windows.Markup.StaticExtension\xe2\x80\x9d wywo\xc5\x82a\xc5\x82a wyj\xc4\x85tek., numer wiersza 24, pozycja 52.\'\nArgumentException: Obiektu StaticExtension \n\xe2\x80\x9eProjectsModule.Resources.Strings.Projects_Config_Projects\xe2\x80\x9d nie mo\xc5\xbcna rozpozna\xc4\x87 jako wyliczenia, pola \nstatycznego ani w\xc5\x82a\xc5\x9bciwo\xc5\x9bci statycznej.\nRun Code Online (Sandbox Code Playgroud)\n翻译过来,它说:
\n"ProjectsModule.Resources.Strings.Projects_Config_Projects" cannot be recognized as enum, static field\nor static property.\nRun Code Online (Sandbox Code Playgroud)\n当加载窗口的 XAML 时,就会发生这种情况。所以我做了一个测试并修改了窗口的构造函数:
\nStrings.resx\nStrings.pl-PL.resx\nRun Code Online (Sandbox Code Playgroud)\n奇怪的是我得到以下输出:
\nKatalogi projekt\xc3\xb3w\n\'Z.exe\' (CLR v4.0.30319: Z.exe): Loaded \'C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Xaml.resources\\v4.0_4.0.0.0_pl_b77a5c561934e089\\System.Xaml.resources.dll\'. Module was built without symbols.\nException thrown: \'System.ArgumentException\' in System.Xaml.dll\nException thrown: \'System.Xaml.XamlObjectWriterException\' in System.Xaml.dll\nException thrown: \'System.Windows.Markup.XamlParseException\' in PresentationFramework.dll\nOperacja podawania warto\xc5\x9bci elementu \xe2\x80\x9eSystem.Windows.Markup.StaticExtension\xe2\x80\x9d wywo\xc5\x82a\xc5\x82a wyj\xc4\x85tek., numer wiersza 24, pozycja 52.\nRun Code Online (Sandbox Code Playgroud)\n“Katalogi projekt\xc3\xb3w”正是我正在寻找的资源 - 所以它显然是可以访问的。但是,由于某种原因,XAML 解析器无法访问它(您可以在正确解析资源后看到前面提到的异常)。
\n我究竟做错了什么?为什么 XAML 解析器无法使用显然可用的资源(而且,从正确翻译的附属程序集读取)?
\n编辑:回应评论
\n资源使用情况:
\nSystem.Windows.Markup.XamlParseException: \'Operacja podawania warto\xc5\x9bci elementu \n\xe2\x80\x9eSystem.Windows.Markup.StaticExtension\xe2\x80\x9d wywo\xc5\x82a\xc5\x82a wyj\xc4\x85tek., numer wiersza 24, pozycja 52.\'\nArgumentException: Obiektu StaticExtension \n\xe2\x80\x9eProjectsModule.Resources.Strings.Projects_Config_Projects\xe2\x80\x9d nie mo\xc5\xbcna rozpozna\xc4\x87 jako wyliczenia, pola \nstatycznego ani w\xc5\x82a\xc5\x9bciwo\xc5\x9bci statycznej.\nRun Code Online (Sandbox Code Playgroud)\n文化是基于操作系统文化的。所以它是自动设置的。
\nStaticExtension 值无法解析为枚举、静态字段或静态属性。
您的.resx文件必须具有Public访问修饰符,否则您将XamlParseException在运行时获得访问修饰符,因为 XAML 解析器无法访问资源。这是Internal默认情况,因此无法从另一个程序集访问资源。要更改访问修饰符,请转到资源编辑器并在标题下拉菜单中进行更改。
或者,将CustomTool资源文件属性中的 更改为PublicResXFileCodeGenerator.
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |