我尝试利用共享项目概念在WPF项目和Android(Xamarin.Forms)之间共享客户端应用程序逻辑。在这两个项目中,我想使用相同的可本地化文本,因此,将资源文件(带文本)移动到共享项目对我来说是合乎逻辑的。
以下示例来自WPF项目,但面临的问题与共享项目有关,而不是WPF。
在基于XAML的视图的WPF项目中,我按如下方式访问字符串值:
<TextBlock Text="{x:Static i18n:Strings.WelcomeMessage}" />
文件Strings.resx
及其翻译位于文件夹I18N
中,即。它们不会放在项目的根目录中。因此,生成的public class Strings
将放置在命名空间TestApp.I18N
中。当I18N文件夹直接属于WPF项目时,一切都运行良好,但是如果我将I18N移动到共享项目,则WPF应用程序崩溃,但异常:
无法找到适合指定文化或中性文化的任何资源。确保&#34; TestApp.I18N.Strings.resources&#34;在编译时正确嵌入或链接到程序集WPF中,或者所需的所有附属程序集都是可加载和完全签名的。
如果我使用一些反汇编工具查看已编译的程序集,我可以看到两个编译之间的区别:
TestApp.Strings.resources
的资源TestApp.I18N.Strings.resources
的资源它实际上解释了为什么在第一种情况下应用程序崩溃的原因。很明显可以使用哪种解决方法(我可以将Strings.resx
与项目根目录相关联)。但是我觉得在共享项目中拥有资源并不是一个好主意,因为缺乏适当的支持。有人可以在这方面分享自己的经验吗?为什么编译器会对共享项目中的资源文件的解释有所不同?