我有以下非标准设置(VS2008,.NET 3.5 SP1):

有一个名为 MainSite 的主 Web 项目,并且有几个具有不同名称的“插件”Web 项目。

在构建这些插件时,我有一个自定义构建步骤,该步骤调用 aspnet_compiler.exeaspnet_merge.exe. 。这会产生两个 .DLL 文件 - 插件名称.dll 和 插件名称_deploy.dll。第一个包含代码隐藏类,第二个包含从 .ascx 文件生成的代码。

然后将这些插件 .DLL 复制到 /MainSite/bin/Plugins/ 文件夹。在运行时(应用程序启动)MainSite 应用程序会查找此文件夹并动态加载其中的所有 .DLL 文件。

我的所有表单都在插件中,在 .ascx 文件中。主应用程序只是一个根据需要加载这些 .ascx 用户控件的骨架。

现在需要本地化。理想情况下,我希望拥有以下内容:

  • 在 Visual Studio 中制作资源时,每个表单都应该有一个单独的资源文件(.ascx 文件),以便人们更容易并行本地化表单。
  • 不错的 meta:resourcekey .ascx 文件中的方法对于本地化控件非常方便;
  • .NET 中的自动资源语言/文化回退机制应该可用;
  • 编译的结果应该是所有插件的文件都可以复制到 /MainSite/bin/Plugins/ 文件夹。如果每种语言/文化都有一个 .DLL 文件,并且必须将它们放入某些特定的子文件夹中 - 只要来自不同插件的 .DLL 没有冲突的名称就可以了。

关于如何实现这一目标有什么想法吗?

有帮助吗?

解决方案

显然,可以在.NET 中实现自定义资源提供程序。 这里 是一篇文章,其中包含解释整个过程的各种其他文章的链接。实际上,您可以从中获取值 meta:resourcekey 并从任何你想要的地方获取价值。例如,上面的文章将所有本地化信息存储在数据库中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top