Visual studio 2010 Visual Studio 2010中的嵌入资源丢失,名称以“结尾”;第xxx号“;

Visual studio 2010 Visual Studio 2010中的嵌入资源丢失,名称以“结尾”;第xxx号“;,visual-studio-2010,embedded-resource,Visual Studio 2010,Embedded Resource,我在VisualStudio2010中遇到了一个奇怪的行为 使用嵌入式资源时(添加到我的C#项目中的文件,其构建操作属性设置为embedded Resource),这些文件将作为二进制数据包含在输出程序集中。列出资源很简单: class Program { static void Main(string[] args) { string[] names = typeof (Program).Assembly.GetManifestResourceNames ();

我在VisualStudio2010中遇到了一个奇怪的行为

使用嵌入式资源时(添加到我的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
结尾(扩展名不相关),则该文件不会显示在列表中。我不明白为什么VisualStudio2010不包含这样一个文件。我错过了什么

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

Microsoft Connect团队的Dan最终为这种行为提供了解决方案:

您好,谢谢您的报告,这实际上工作正常。原因是,假定名称与模式
.VALIDCULTURE.resx
匹配的任何resx文件都特定于该区域性。(这是自VS2002以来的工作方式,无论好坏) 在您的情况下,
“no”
是一种有效的区域性(我想是挪威语),因此构建过程将其构建到附属程序集中。这是我试过的结果。注意
“no”
子文件夹。如果在应用程序中将当前区域性更改为挪威语,则资源加载将加载这组资源

因此,问题与单词
No
本身无关,而是它是一个有效的、两个字母的文化名称(在我的例子中是挪威语)。我检查了一下,确实,在
bin\Debug
中有一个子文件夹名为
No
,其中包含一个名为
Project.resources.dll
的附属程序集


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

我最终将此作为一个bug发布到Microsoft Connect(2010年8月17日)。哇,你可以在StackOverflow上找到任何东西!与未嵌入的文件ii.tif存在相同的问题。