0

我对 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 配置中相同。

4

1 回答 1

0

在比较了两种 IIS 配置后,我终于找到了解决方案。为部署而构建必须明确针对 x86(即使对于 x64 环境),然后才能正常工作。

于 2014-09-18T13:31:46.130 回答