3

我正在尝试使用多语言文件开发示例应用程序。
我使用:Windows 7 64 位和 Visual Studio 2012 Express。
我在网上阅读了一些教程,并创建了一个示例应用程序。

在我的 Debug 目录中,我为语言文件创建了文件夹:'en' 和 'pl'
我在这些目录和主目录中创建了文本资源文件,所以我的文件结构是:

lang.txt
lang.resouces
multilang.resources.dll
multilang.exe
-en
--lang.en.txt
--lang.en.resources
--multilang.resources.dll
-pl
--lang.pl.txt
--lang.pl.resources
--multilang.resources.dll

我写了一个 .bat 文件来嵌入卫星程序集做我的应用程序 resgen lang.txt al.exe /t:lib /embed:lang.resources /culture:pl-PL /out:multilang.resources.dll

resgen en/lang.en.txt
al.exe /t:lib /embed:en/lang.en.resources,multilang.en.resources /culture:en /out:en/multilang.resources.dll

resgen pl/lang.pl.txt
al.exe /t:lib /embed:pl/lang.pl.resources,multilang.pl.resources /culture:pl /out:pl/multilang.resources.dll

在我的应用程序中,我使用 ResourceManager

_rm = new ResourceManager("multilang", Assembly.GetExecutingAssembly());

以及获取文本的 GetString 方法

this._rm.GetString(stringFromRm);

当我在 .NET 4.5 框架中编译我的应用程序时它工作正常,但是当我将项目属性中的目标框架更改为 .NET 2.0 时,我总是得到这个异常:

System.Resources.MissingManifestResourceException

我的应用程序必须在 Windows XP 上运行,因此它必须适用于早期的 .NET Framework 版本。

有人可以告诉我必须更改什么才能在 .NET Framework 2.0 上运行我的应用程序吗?

4

1 回答 1

2

在运行resgen.exeal.exe用于应在 .NET 框架上运行的应用程序时,您必须确保生成的程序集可以被 .NET 2.0 运行时读取。.NET 4 中扩展了程序集格式,因此 2.0 运行时能够加载 4.0 程序集。

因此,请确保您使用的工具都来自较新的框架版本,C:\Windows\Microsoft.NET\Framework\v2.0.50727而不是来自较新的框架版本。

于 2012-10-21T09:44:10.253 回答