我正在制作一个带有vb编码的asp.net Web应用程序。我在网上发现了一个用于制作多语言网站的代码,并且由于原始代码是在C#中,我做了一个C#项目来尝试它。一切都很顺利。现在,我将代码转换为VB以在原始项目中使用它,并且出于某种原因,调试不想启动,总是将MissingManifestResourceException作为错误抛出。资源文件'Build Action'设置为Embedded Resource,我使用的代码是:
Dim rm As ResourceManager
Dim ci As CultureInfo
Private Sub LoadString()
Thread.CurrentThread.CurrentCulture = New CultureInfo(Session("Lang").ToString())
rm = New ResourceManager("WebApplication6.App_GlobalResources.Lang", Assembly.GetExecutingAssembly())
ci = Thread.CurrentThread.CurrentCulture
NavigationMenu.Items(0).Text = rm.GetString("MenuItemDefault", ci)
NavigationMenu.Items(1).Text = rm.GetString("MenuItemAbout", ci)
End Sub
其中“Lang”是基本资源文件的名称。文件名称: Lang.en-US.resx,Lang.es-ES.resx
整个错误如下:
MissingManifestResourceException was unhandled by user code
Could not find any resources appropriate for the
specified culture or the neutral culture. Make sure
"WebApplication6.App_GlobalResources.Lang.resources" was correctly embedded or linked into
assembly "WebApplication6" at compile time, or that all the satellite
assemblies required are loadable and fully signed."
同样,在C#中,整个过程都奏效了。此代码放在一个函数中,该函数从Load_Page表单中调用。
提前感谢您的帮助!
答案 0 :(得分:0)
花了好几个小时试图搞清楚后,我找到了一个解决方案。 我做的是替换这个字符串:
rm = New ResourceManager("WebApplication6.App_GlobalResources.Lang", Assembly.GetExecutingAssembly())
有了这个:
rm = New ResourceManager("WebApplication6.Lang", System.Reflection.Assembly.Load("WebApplication6"))
但是从原始字符串中删除“App_GlobalResources”也有效。所以另一个可行的解决方案是:
rm = New ResourceManager("WebApplication6.Language", Assembly.GetExecutingAssembly())
更换字符串后,我只是将其他所有内容保留在主帖中。现在一切正常。