我可以在卫星程序集中合并本地资源吗?

2023-11-21

我有很多本地资源文件

  • /Controls/App_LocalResources/SomeControl.ascx.resx,
  • /Pages/App_LocalResources/SomePage.aspx.resx 等

我想添加另一种语言,但我不想遍历所有文件夹并添加 SomeControl.ascx.de.resx 文件,然后必须重新编译整个想法。

我想使用附属程序集并将所有文件嵌入到类似 MyWebPage.de.dll 的文件中

这在 VS2003 版本中对于全局资源是可能的,但我不确定在 VS2008 版本中对于本地资源是否可以做到这一点?

我正在使用以下语法访问资源:

<asp:label id="lblSomething" runat="server" meta:resourcekey="labelFirstName"/>

您的问题并不太清楚您是在寻找 VS2008 的功能还是 ASP.NET 框架的功能。所以我将使用代码解决方案。

您使用的隐式绑定语法使用 ASP.NET 的默认 LocalResourceProvider,它采用资源所在页面的路径来确定要加载的资源。如果您的资源存储在其他地方,并且您仍然想在前面的代码中使用隐式绑定系统,则需要使用您自己的提供程序。听起来很复杂,但其实相当简单。

为此,您需要首先子类化 ResourceProviderFactory

并覆盖两者

IResourceProvider CreateGlobalResourceProvider(string classKey)
IResourceProvider CreateLocalResourceProvider(string virtualPath)

...然后实现您自己的 IResourceProvider,使用 ResourceManager 从卫星程序集中获取资源

public interface IResourceProvider
{
     object GetObject(string resourceKey, CultureInfo culture);
     IResourceReader ResourceReader { get; }
}

然后,您需要将配置添加到您的 web.config 文件,以让 ASP.NET 知道使用您的 SatelliteResourceProviderFactory 并将您的资源移动到您的外部程序集中,但这应该是您的最佳选择。

可以在这里找到大量文档...在“构建数据库资源提供程序”部分...

http://msdn.microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在卫星程序集中合并本地资源吗? 的相关文章

随机推荐