下面的程序应该从卫星资源文件中获取资源字符串。使用 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 并没有!(我想知道注册表数据库中是否有一些东西不能通过简单的重新安装来重置)