0

Web アプリケーションのローカリゼーションでリソースに問題があります。別のアセンブリ (WebSite、BLL など) からそれらを使用する必要があるため、それらを別のライブラリに移動することにしました。3 つの異なるビルド構成 (デバッグ、リリース、およびリリースに基づく QA) を使用しています。アプリケーションをローカルで実行すると、(構成とは関係なく) すべて問題ありません。問題は、IIS に展開するときです (ローカルまたは外部サーバーで同じ状況)。デバッグ構成での展開は正常に機能しますが、QA またはリリースでは次の例外が発生します。

System.Web.HttpUnhandledException (0x80004005): 'System.Web.HttpUnhandledException' 型の例外がスローされました。---> System.Resources.MissingManifestResourceException: 指定されたカルチャまたはニュートラル カルチャに適したリソースが見つかりませんでした。コンパイル時に "MyToolResources.Resources.Emails.Mail.resources" がアセンブリ "BusinessLogicLayer" に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライト アセンブリが読み込み可能で完全に署名されていることを確認してください。

その問題に関する多くのトピックを見つけましたが、ビルド/展開構成に依存しているものはありませんでした。

アセンブリ: MyTool - Web サイト 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/リリース構成と同じです。

4

1 に答える 1

0

両方の IIS 構成を比較した後、最終的に解決策を見つけました。展開用のビルドは、x86 (x64 環境であっても) を明示的にターゲットにする必要があり、その後は機能します。

于 2014-09-18T13:31:46.130 に答える