以下のプログラムは、サテライト リソース ファイルからリソース文字列を取得することになっています。VS2015 を使用して target framework='NET Framework 4.5.2' でコンパイルすると正常に動作します。ただし、target framework='NET Framework 3.5' を設定すると、サテライト リソース ファイルを見つけることができなくなり、既定のリソースにフォールバックします。
.exe ファイルとサテライト .dll ファイルを調べたところ、それらが異なる .net バージョンにコンパイルされていることがわかりました (それらを生成したのは同じコンパイルでしたが)。
Main exe got: .Net Framework v3.5
Satellite resource dll got: .Net Framework v4.0
サテライト dll が間違った .Net バージョンを取得しているようです。誰かがこれを経験しましたか?解決策はありますか? (プロジェクトを最新の .Net バージョンにアップグレードする以外)
class Program
{
static void Main(string[] args)
{
CultureInfo newCultureInfo = new System.Globalization.CultureInfo("da-DK");
Thread.CurrentThread.CurrentUICulture = newCultureInfo;
Console.WriteLine("Resource test");
ResourceManager rm = new ResourceManager("ResourceTest.Resources.MyResources", Assembly.GetExecutingAssembly());
Console.WriteLine(rm.GetString("hello"));
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
編集: 開発環境の更新がうまくいかなかったようです。コンピューター全体の再インストールは役に立ちましたが、単に .Net と Visual Studio を再インストールするだけでは役に立ちません! (単純な再インストールではリセットされないものがレジストリデータベースにあるのだろうか)