找不到适合指定文化的任何资源(资源文件中的C#WinForm图像)
我在一个名为Resource1.resx的文件中添加了三个图像。 我还添加了一个字符串,仅用于测试目的。 我在GetString或GetObject(图像名称)上收到此错误。
{“找不到适合指定文化或中性文化的任何资源。确保在编译时将”Resource1.resources“正确嵌入或链接到程序集\”TFBIC.RCT.Monitor \“,或者全部所需的卫星assembly是可装载的并且是完全签名的。“}
// get initial images ResourceManager rm = new ResourceManager( "Resource1",System.Reflection.Assembly.GetExecutingAssembly()); CultureInfo ci = Thread.CurrentThread.CurrentCulture; string strTest = rm.GetString("String1"); // just testing Bitmap bmCircleGreen = (Bitmap)rm.GetObject("circleGreen"); Bitmap bmCircleYellow = (Bitmap)rm.GetObject("circleYellow"); Bitmap bmCircleRed = (Bitmap)rm.GetObject("circleRed");
我的表单是我项目中的第一个类(我已经看到了这个错误)。
我为我的项目分配了一个强项,但无济于事。
不知道还有什么可以尝试。
您是否记得在引用资源时包含默认命名空间/文件夹?
ResourceManager rm = new ResourceManager("DefaultNamespace.Folder.ResourceName");
如果您不确定正确的名称,请在Reflector中加载程序集并向下浏览以查看它是什么。
第一个论点是错误的。 但是,已经为您创建了ResourceManager。 您可以看到其代码:在Solution Explorer窗口中打开Properties节点,打开Resources.resx节点,然后双击Resources.Designer.cs文件。
您将使用Properties.Resources.ResourceManager
获取其实例。 如果您使用Project + Properties,Resources选项卡(强烈推荐)添加了位图,您可以通过您提供的名称来引用该属性。 与Properties.Resources.circleGreen
一样。 请注意,每次使用属性时都会获得一个新的图像对象,如果多次使用它,可能需要将其复制到变量中。
我也有同样的问题。 添加“DefaultNameSpace”。 (在我的情况下,“BusinessLogic”是默认命名空间)在以下行中的resourcefileName解决了我的问题之前
public static ResourceManager rm = new ResourceManager(string.Concat("BusinessLogic." , Constants.Common.ResourceFileName), Assembly.GetExecutingAssembly());
今天我在VS设计器构建的winform上遇到了同样的问题。 我已将图像添加到menuStrip的项目中:
this->menuitemFileSettings->Image = (cli::safe_cast (resources->GetObject(L"menuitemFileSettings.Image")));
从那以后出现了同样的错误。 在其他控件上使用图像进行测试是相同的。
- 基于MS KB ,Form类必须是代码中的第一个。 这在我的代码中很好。
- resouces文件也具有与winforms类(frmMain)相同的名称(frmMain.resx)。
- 使用ILSpy检查创建的exe,我甚至在文件中找到了图像资源。 我追溯到的东西并不是真正理解的。
- 我没有使用任何本地化。
- 我创建了一个新的winform,复制了那里的所有相关部分,同样的失败。
不知何故,我终于偶然发现了项目设置中的“Managed Resources”条目。 设置“资源文件名”具有(默认)值$(IntDir)\$(RootNamespace).$(InputName).resources
…这是正确的,但是当我意识到路径包含命名空间的名称时 ,我检查了命名空间,发现我已经更改了它(从NS_Winform到NS_assemblies),以便更容易地导入程序集。
改回来,现在工作正常。 🙂
但我还是不明白,资源内容如何
1)尽管命名空间错误,但仍被包含在exe中,并且
2)虽然包括在内但未找到。
- 如何将EF Code First DbContext绑定到Asp.Net DataSource?
- 是否可以在不使用WMI的情况下获得网络适配器的PnPDeviceId?
- Equals和GetHashCode中的延迟加载的NHibernate属性
- Twoway-bind视图的DependencyProperty到viewmodel的属性?
- 循环引用和ScriptIgnore问题
- Application_Errorexception处理,重定向无限循环和CSS加载问题
- 为什么LINQ to Entities不识别某些方法?
- 如何使用对象的标识作为Dictionary 的键
- 使用Noda Time在时区之间进行转换