代码之家  ›  专栏  ›  技术社区  ›  Pierre Arnaud

名称以“no.xxx”结尾时,Visual Studio 2010中缺少嵌入资源

  •  5
  • Pierre Arnaud  · 技术社区  · 15 年前

    我在Visual Studio 2010中遇到了一个奇怪的行为。

    当使用嵌入的资源(添加到我的c项目中的文件以及 构建动作 属性设置为 Embedded Resource )文件作为二进制数据包含在输出程序集中。列出资源很简单:

    class Program
    {
        static void Main(string[] args)
        {
            string[] names = typeof (Program).Assembly.GetManifestResourceNames ();
    
            foreach (var name in names)
            {
                System.Console.Out.WriteLine (name);
            }
        }
    }
    

    但是,如果嵌入的资源文件名以 No.xxx (扩展名不相关),文件不会显示在列表中。我不明白为什么Visual Studio 2010不包含这样的文件。我错过了什么?

    注意:如果我将解决方案资源管理器中的嵌入资源文件重命名为其他文件,则一切工作正常。

    1 回复  |  直到 15 年前
        1
  •  6
  •   Pierre Arnaud    15 年前

    微软连接 团队最终提供了 valid explanation 对于这种行为:

    你好,谢谢你的报告,这真的很正常。原因是任何名称与模式匹配的resx文件 .VALIDCULTURE.resx 假定是特定于该文化的。(这是自VS2002以来的工作方式,无论好坏) 以你为例 "no" 是有效的区域性( 挪威语 我猜)所以构建过程把它构建成一个卫星组件。这是我试过的结果。注意 “不” 子文件夹。如果在应用程序中将当前区域性更改为挪威语,则资源负载将加载这组资源。

    所以这个问题与这个词无关 No 它本身,但实际上它是一个有效的两个字母的文化名称(在我的例子中是挪威语)。我查过了,的确,里面有一个子文件夹 bin\Debug 命名 ,包含名为 Project.resources.dll 在里面。

    重命名资源以结束 .EN.xxx .FR.xxx 当然,也会表现出同样的行为。

    推荐文章