未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“xxx.Resources.resources”正确嵌入或链接到程序集

从github下载了一个皮肤控件,不想外带dll,就想着直接把源码丢进程序里编译.

结果就报了错,具体解决办法如下:

双击dll源码的资源设计类,将 "WinForm.UI.Properties.Resources" 更改为 "client.Libs.WinForm.UI.Properties.Resources"

而这个client.Libs.是我程序的完整路径,代表

 /// <summary>
        ///   返回此类使用的缓存的 ResourceManager 实例。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WinForm.UI.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

 程序完整路径图:

 

 

详细解释转载自:

法号阿兴 2016-11-15 原文

 

  今天在测试一个工程的时候,突然遇到了这样一个问题: 错误信息:System.Resources.MissingManifestResourceException: 未能找到任何适合于指定的区域或非特定区域性的资源。请确保在编译时已将“****.****.Resource.resources”正确嵌入或链接到程序集"****",或者确保所有需要的附属程序集都可加载并已进行了完全签名。

  在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解决方法方便以后遇到同样问题的朋友: 其实这个错误的主要问题就是没有找到需要的资源文件(该文件为Resources.resx), 引用该文件的地方就是 System.Resources.ResourceManager manager = new System.Resources.ResourceManager("×××.Resources", typeof(Resources).Assembly); 而导致错误的原因就是"×××.Resources"的配置错误

  解决方法:首先查看工程中时候存在Resources.resx相关的文件, 找到它在工程中的位置(不如说一般都是在:工程名.Properties 命名空间下), 最后更改配置为new System.Resources.ResourceManager("工程名.Properties.Resources", typeof(Resources).Assembly);

  续: 我这里在举个详细的例子,以便能够更明白哈 首先,一个容器(不管是Form,或是Panel也好),如果与其配套一个资源文件(以后缀名为.resx),则这2个文件应是在同一个命名空间下,才能相互使用 举个最特殊的例子 比如说一个工程名叫Test.Tname 其下有一个文件夹叫aaa(文件夹名字随便,没有关系) 文件夹aaa下有一个类文件叫Form1.cs,其命名空间为:Test.Tname(注意:命名空间才是重要的位置信息) 现在也有一个资源文件叫Form1.resx (默认此资源文件是没有问题的,但是在特别的情况下,此文件就不会再正确的位置,导致出现如题的异常信息,比如说我反编译一个工程,自动生成的资源文件的位置就有问题)。 在Form1.cs中有句代码是需要资源文件的 ResourceManager manager = new ResourceManager(typeof(Test.Tname.Form1)); 这里就注意了,如果Form1.cs类文件与Form1.resx资源文件是分开的话, 那么Form1.resx资源文件应放在哪个地方,程序才能找到他呢? 首先我们看哈Form1.cs类文件的命名空间为Test.Tname。 而资源文件Form1.resx中并没有命名空间的描述,所以只有靠位置来表示 再看下我们的工程名称:Test.Tname很好,它跟Form1.cs类文件的命名空间相同 所以我们就把Form1.resx资源文件放在工程的根目录下面 问题解决了,呵呵 其实我觉得最重要的问题就是类文件中可以有namespace来描述位置 而资源文件中并没有这行代码,只能靠真正的位置,这才是关键。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值