我正处于迁移到 .NET5 的缓慢过程中,但在此之前的步骤之一是将我们所有的 WinForms 项目转换为 NET-SDK 项目格式。
此转换已完成,一切似乎都正常,但我遇到了一些问题。
某些使用资源的表单现在会抛出异常,指出
System.Resources.MissingManifestResourceException: 'Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Demo.FormTest.resources" was correctly embedded or linked into assembly "Demo" at compile time, or that all the satellite assemblies required are loadable and fully signed.'
Run Code Online (Sandbox Code Playgroud)
我已经通过手动将资源项添加到 csproj 文件来解决其中的一些问题,因此我必须添加类似的内容
<ItemGroup>
<EmbeddedResource Update="Demo.FormTest.resx" />
</ItemGroup
Run Code Online (Sandbox Code Playgroud)
这解决了一个表单的问题,但是对于数百个表单,这将是一个巨大的痛苦...是否有更好的方法来处理 NET-SDK 格式项目中的所有这些表单资源文件?
我有这个功能,它可以从这个名为OkayMessages的特定资源文件中获取翻译的值.
public static string GetResourceString(string resourceKey){
ResourceManager resourceManager = Resources.OkayMessages.ResourceManager;
return resourceManager.GetString(resourceKey);
}
Run Code Online (Sandbox Code Playgroud)
但我有超过1个资源文件,我希望这个函数也从这些文件中获取值..只是,我在动态/编程选择正确的资源(经理)时遇到了麻烦.我试图使用下面的代码,以及一些变体,但我总是得到一个错误.
public static string GetResourceString(string resourceFile, string resourceKey){
ResourceManager resourceManager = new System.Resources.ResourceManager("Resources." + resourceFile, Assembly.GetExecutingAssembly());
return resourceManager.GetString(resourceKey);
}
Run Code Online (Sandbox Code Playgroud)
我大部分时间都犯的错误是:找不到适合指定文化或中性文化的资源.确保"Resources.OkayMessages.resources"已正确嵌入或链接到程序集中.
更新:我正在使用\ App_GlobalResources \文件夹作为我的资源文件,似乎这就是问题所在.当我将资源文件放在项目的根目录中时,我可以毫无问题地初始化ResourceManager.
我尝试添加ajax控件工具包时遇到问题:
找不到适合指定文化或中性文化的资源.确保在编译时将"AjaxControlToolkit.Properties.Resources.NET4.resources"正确嵌入或链接到程序集"AjaxControlToolkit"中,或者所有所需的附属程序集都是可加载和完全签名的.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.Resources.MissingManifestResourceException:找不到任何资源适合指定区域性或中性文化.确保在编译时将"AjaxControlToolkit.Properties.Resources.NET4.resources"正确嵌入或链接到程序集"AjaxControlToolkit"中,或者所有所需的附属程序集都是可加载和完全签名的.
源错误:在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.