我有一个业务对象的类库。我将损坏的规则字符串存储在与项目关联的资源文件中(My Projects> Resources.resx)。我在项目中添加了一个新的resx文件,并将其命名为Resources.fr-CA.resx,以存储规则的法语等价物。
我用My.Resources对象调用字符串,如下所示:
e.description = My.Resources.BrokenRulesString
当我在本地运行应用程序(即在Visual Studio中点击“播放”)时,这就像一个魅力。但是,当我构建应用程序并将其部署到另一个环境时,我总是在默认资源文件中获取值。
即使我在Resources.Designer.vb文件中明确地将文化设置为“fr-CA”,这样,该属性也会从默认资源文件中返回字符串:
Public ReadOnly Property BrokenRulesString() As String
Get
Return ResourceManager.GetString("BrokenRulesString", "fr-CA")
End Get
End Property
在我看来,应用程序无法看到fr-CA资源文件,因此默认为...默认文件。有任何提示让这个工作?
谢谢。
答案 0 :(得分:1)
您需要确保包含本地化字符串的附属程序集部署在正确的目录结构中。有关详细信息,请参阅this MSDN文章。
来自文章:
After you have compiled your satellite assemblies, they all have the same name. The runtime differentiates between them based upon the culture specified at compile time with Al.exe's /culture option and by each assembly's directory location. You must place your satellite assemblies in expected directory locations.
答案 1 :(得分:0)
归根结底,我没有为Business.Library项目添加适当的项目输出组(本地化资源)到安装项目。我将它添加到bin文件夹中,现在部署的应用程序也像魅力一样。
Oded,谢谢你让我的头指向正确的方向。干杯!