0

我一般对本地化不是很熟悉,而且我对 Microsoft Enterprise Library 是全新的。如何创建本地化资源并在异常管理中使用它?

我设置了一个替换处理程序,以便在我的策略处理异常时抛出友好的错误消息,并且那里有用于指定消息资源名称和消息资源类型的字段。我不知道这些领域发生了什么。我找不到任何例子。

4

2 回答 2

1

您不必手动编辑 Designer 文件;事实上,你不应该。

我使用的是 VS 2010 和 C#,但 VS 2012 和 VB 的概念应该相同。

除了您的回答之外,以下链接对我非常有帮助,可以解决这个问题:

http://odetocode.com/blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

(你可以忽略他关于 App_GlobalResources 的警告——这就是我的 Exceptions.resx 文件,这对我有用。)

  1. 确保企业库配置工具已关闭。
  2. 打开 Designer.vb(或 Designer.cs)文件,以便观察发生的变化。
  3. 右键单击您的 .resx 文件并选择属性。
  4. 将Build Action更改为Embedded Resource
  5. 将自定义工具更改为PublicResXFileCodeGenerator。这确保了该类生成为公共的,而不是内部的(或 VB 中的 Friend)。在您单击离开此属性后,您应该会看到您的资源类现在在 Designer 文件中定义为公共。
  6. 自定义工具命名空间设置为有意义的东西,即<ApplicationName>.Resources。观察 Designer 文件中的命名空间已更改。
  7. 构建您的项目以获得新版本的程序集。
  8. 在配置工具中编辑您的 EntLib 配置文件,展开异常处理设置,然后展开您要配置的 Wrap 或 Replace Handler。
  9. 单击消息资源类型字段末尾的省略号 (...) 。这将打开类型浏览器。单击从文件中添加,浏览到项目的 bin 文件夹,然后选择项目的主程序集。该类型现在应该出现在 Loaded 程序集中。
  10. Expand the assembly to find the namespace you entered above, expand that, select the type that has been created for your exception messages, and click OK.
  11. Set the Message Resource Name to the key in the resource file that holds the message for this exception.
于 2013-03-26T18:41:46.680 回答
0

我想通了。

您可以像任何其他本地化一样在 .resx 文件中添加标准资源。我的问题是,当我在企业库的配置界面中将资源类型和资源名称添加到我的替换处理程序时,程序集没有包​​含任何要添加的类型。

问题是两件事。当您使用 VB.Net 在 Visual Studio 2012 中创建 .resx 时,它使用 My.Resources 作为命名空间。可能是 My.[FolderName],我不知道。另一个问题是它将类创建为 Friend,而不是 Public。

我不得不更改属性中的命名空间,并在 .vb 文件中手动将 Friend 更改为 Public。每当我添加新资源时它就会变回来,因为它会重新生成代码,但至少现在我可以让它工作。

于 2012-09-18T15:54:02.997 回答