2011-03-09 100 views
0

我刚刚将我的一个表单设置为Localization:True,并将语言留为“Default”。语言设置为“默认”,但我没有看到一个resource.dll?

我检查了resx,果然它包含了我的表单的所有字符串。

所以我运行应用程序,我希望能够在我的Debug目录中找到卫星资源DLL,但它不存在。

所以这让我感到惊讶......是不是DEFAULT语言编译为附属DLL?

我想将语言(包括DEFAULT)作为卫星程序集来分发。

+0

看起来默认语言是作为DLL导出的。我测试了另一种语言,并且看到了一个创建的dll。无论如何强制默认语言被导出。或者至少自动将默认语言复制到(例如)美国英语。 – Martin 2011-03-09 12:26:21

回答

2

你是对的 - 默认资源直接编译到程序集本身。一旦你改变了表格的Language属性并修改了资源,那么在建立一个卫星装配后就会为这种语言创建。

这样做的原因是,如果表单未本地化为用户的UI语言,则总是会使用回退语言。

+0

谢谢,那么有没有办法将我的默认语言自动复制到en-US?这样我可以自动改变文化en_US默认情况下,当我启动我的应用程序,它会自动加载卫星DLL ...或者我需要使用复制和粘贴:-)? – Martin 2011-03-09 14:09:17

+0

@Martin如果你想让en-US成为你的默认语言,你不应该为它制作卫星组件。 .NET将为给定资源加载正确的语言(基于当前线程的UICulture),如果没有找到,它将回退到默认值。这是你的意思,还是你的意思是别的? – Andy 2011-03-09 14:47:53

+0

谢谢安迪,正是我需要的 – Martin 2011-03-18 09:04:27