我刚刚将我的一个表单设置为Localization:True,并将语言留为“Default”。语言设置为“默认”,但我没有看到一个resource.dll?
我检查了resx,果然它包含了我的表单的所有字符串。
所以我运行应用程序,我希望能够在我的Debug目录中找到卫星资源DLL,但它不存在。
所以这让我感到惊讶......是不是DEFAULT语言编译为附属DLL?
我想将语言(包括DEFAULT)作为卫星程序集来分发。
我刚刚将我的一个表单设置为Localization:True,并将语言留为“Default”。语言设置为“默认”,但我没有看到一个resource.dll?
我检查了resx,果然它包含了我的表单的所有字符串。
所以我运行应用程序,我希望能够在我的Debug目录中找到卫星资源DLL,但它不存在。
所以这让我感到惊讶......是不是DEFAULT语言编译为附属DLL?
我想将语言(包括DEFAULT)作为卫星程序集来分发。
你是对的 - 默认资源直接编译到程序集本身。一旦你改变了表格的Language
属性并修改了资源,那么在建立一个卫星装配后就会为这种语言创建。
这样做的原因是,如果表单未本地化为用户的UI语言,则总是会使用回退语言。
谢谢,那么有没有办法将我的默认语言自动复制到en-US?这样我可以自动改变文化en_US默认情况下,当我启动我的应用程序,它会自动加载卫星DLL ...或者我需要使用复制和粘贴:-)? – Martin 2011-03-09 14:09:17
@Martin如果你想让en-US成为你的默认语言,你不应该为它制作卫星组件。 .NET将为给定资源加载正确的语言(基于当前线程的UICulture),如果没有找到,它将回退到默认值。这是你的意思,还是你的意思是别的? – Andy 2011-03-09 14:47:53
谢谢安迪,正是我需要的 – Martin 2011-03-18 09:04:27
看起来默认语言是作为DLL导出的。我测试了另一种语言,并且看到了一个创建的dll。无论如何强制默认语言被导出。或者至少自动将默认语言复制到(例如)美国英语。 – Martin 2011-03-09 12:26:21