单独程序集中的资源在不同的构建配置中不可见

时间:2014-09-17 11:01:42

标签: c# resources .net-assembly resx buildconfiguration

我在Web应用程序中使用本地化的资源存在问题。我需要在不同的程序集(WebSite,BLL等)中使用它们,所以我决定将它们移动到一个单独的库中。 我正在使用三种不同的构建配置(基于Release的Debug,Release和QA)。当我在本地运行应用程序时,一切都很好(独立于配置)。问题是我在IIS上部署它(本地或外部服务器的情况相同)。在Debug配置中的部署工作正常但在QA或Release I中遇到此异常:

  

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配置中也是如此。

1 个答案:

答案 0 :(得分:0)

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