单独程序集中的资源在不同的生成配置中不可见
本文关键字:配置 程序 集中 资源 单独 程序集 | 更新日期: 2023-09-27 18:22:14
我在web应用程序中遇到本地化资源问题。我需要从不同的程序集(WebSite、BLL等)使用它们,所以我决定将它们移到一个单独的库中。我使用三种不同的构建配置(调试、发布和基于发布的QA)。当我在本地运行应用程序时,一切都很好(独立于配置)。问题是当我在IIS上部署它时(本地或外部服务器的情况相同)。调试配置中的部署工作正常,但在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目录中——在调试和QA/QC配置中也是如此。
在比较了两种IIS配置后,我终于找到了解决方案。部署的生成必须明确针对x86(即使是x64环境),然后才能工作。