WinForms アプリから呼び出されたときに作成したアセンブリに埋め込まれたリソースにアクセスすると、奇妙なエラーが発生します。
Resources.resx
基本的に、フォルダーに単一の標準リソース ファイル ( )を含むアセンブリがありProperties
ます。アセンブリはWestwind.RazorHosting
であるため、リソースは に生成されWestwind.RazorHosting.Properties
ます。Resources.Designer.cs
アセンブリ コード内からのみ、生成されたデザイナー クラス ( ) を使用してリソースにアクセスします。
プロジェクトに対してテストを実行すると、テスト プロジェクトはすべて問題ありません。エラー (アプリで使用されるリソースの主なソース) が適切に表示されます。
ただし、WinForms アプリがアプリを呼び出してエラーが発生すると、リソース アクセスは失敗します。エラーは次のとおりです。
アセンブリ (Westwind.RazorHosting.resources) またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません
Westwind.RazorHosting.Properties.resources
ではなく を指していることに注意してくださいWestwind.RazorHosting.resources
。
デバッガーを使用してこのコードにステップインすると、生成されたResources.designer.cs
クラスに直接ステップインすると、ResourceManager
まったく問題ないように見えます。参照があり、内部で正しい名前空間を指しています。デフォルトの en-US ロケールで実行しています。生成されたアセンブリを確認したところ、適切な/予想されるリソース ID (つまりWestwind.RazorHosting.Properties.ResourceId
) の下にリソースが存在します - それらは存在します。
.NET がリソースの間違った場所を検索する原因は何ですか?