我对 Web 应用程序中的本地化资源有疑问。我需要从不同的程序集(网站、BLL 等)中使用它们,所以我决定将它们移到一个单独的库中。我正在使用三种不同的构建配置(调试、发布和基于发布的 QA)。当我在本地运行应用程序时,一切都很好(独立于配置)。问题是当我在 IIS 上部署它时(本地或外部服务器的情况相同)。Debug 配置中的部署工作正常,但在 QA 或 Release 中我得到这个异常:
System.Web.HttpUnhandledException (0x80004005):引发了“System.Web.HttpUnhandledException”类型的异常。---> System.Resources.MissingManifestResourceException:找不到适合指定区域性或中性区域性的任何资源。确保“MyToolResources.Resources.Emails.Mail.resources”在编译时被正确嵌入或链接到程序集“BusinessLogicLayer”中,或者所有需要的附属程序集都是可加载的并且完全签名。
我发现了许多与该问题有关的主题,但没有一个取决于构建/部署配置。
程序集: MyTool - 网站 BusinessLogicLayer - 类库 MyToolResources - 具有资源的类库
我的资源管理器:
var assembly = System.Reflection.Assembly.GetCallingAssembly();
mailResourceManager = new ResourceManager("MyToolResources.Resources.Emails.Mail", assembly);
private static ResourceSet GetResourceSet(ResourceManager resourceManager, CultureInfo culture)
{
return resourceManager.GetResourceSet(culture, true, true);
}
包含资源的程序集被正确复制到 /bin 目录中 - 在 Debug 和 QA/Release 配置中相同。