类库中的My.Resources在部署时表现不尽如人意

时间:2010-01-19 21:42:46

标签: visual-studio visual-studio-2008 file localization resources

ASP.NET应用程序w / CSLA框架; Visual Studio 2008

我有一个业务对象的类库。我将损坏的规则字符串存储在与项目关联的资源文件中(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资源文件,因此默认为...默认文件。有任何提示让这个工作?

谢谢。

2 个答案:

答案 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,谢谢你让我的头指向正确的方向。干杯!