2012-10-21 26 views
3

我正在嘗試開發具有多語言文件的示例應用程序。
我使用:Windows 7 64位和Visual Studio 2012 Express。
我在網上閱讀了一些教程,並創建了一個示例應用程序。多語言WinForms應用程序不能與.NET 2.0一起工作

在我的Debug目錄我創建的文件夾的語言文件:「恩」和「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工具/噸:LIB /embed:lang.resources /文化: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上運行我的應用程序?

回答

2

對於應該在.NET框架上運行的應用程序運行resgen.exeal.exe時,必須確保生成的程序集可以被.NET 2.0運行時讀取。彙編格式已在.NET 4中進行了擴展,因此2.0運行時將能夠加載4.0程序集。

因此,請確保您使用C:\Windows\Microsoft.NET\Framework\v2.0.50727這兩個工具,而不是使用較新的框架版本。

+0

謝謝你的線索。在這個目錄中我找不到工具(al.exe,resgen.exe)。我在resgen.exe中找到switch/r,我可以鏈接到.NET 2.0。但我如何在al.exe中定位.NET Framework? – pejoter

+0

/r開關不會影響輸出格式,只能指定應引用(使用)的程序集。您應該安裝.NET 2.0,x86版本請參閱此處:https://www.microsoft.com/en-us/download/details.aspx?id=19988 –

+0

再次感謝您。安裝.NET 2.0 SDK(用於resgen.exe)並更改我的bat文件以使用.net 2.0工具 - 它工作正常! – pejoter

相關問題