5

以下のプログラムは、サテライト リソース ファイルからリソース文字列を取得することになっています。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 を再インストールするだけでは役に立ちません! (単純な再インストールではリセットされないものがレジストリデータベースにあるのだろうか)

4

1 に答える 1