在没有程序集前缀的.NET程序集中嵌入资源?

在没有程序集前缀的.NET程序集中嵌入资源?,.net,visual-studio,resources,embedded-resource,visual-studio-2008-sp1,.net,Visual Studio,Resources,Embedded Resource,Visual Studio 2008 Sp1,使用Visual Studio将资源嵌入到.NET程序集中时,它将以程序集名称作为前缀。但是,程序集可以具有不带程序集名称前缀的嵌入式资源。我能看到的唯一方法是使用ILDASM分解程序集,然后重新组装它,添加新资源——这是可行的,但是。。。我真的需要完成那句话吗 (桌面.NET Framework 3.5,Visual Studio 2008 SP1,C#,Windows 7 Enterprise x64。)非程序集名称-命名空间;)默认名称空间,IIRC。前缀是默认名称空间;) 实际上,有一种

使用Visual Studio将资源嵌入到.NET程序集中时,它将以程序集名称作为前缀。但是,程序集可以具有不带程序集名称前缀的嵌入式资源。我能看到的唯一方法是使用ILDASM分解程序集,然后重新组装它,添加新资源——这是可行的,但是。。。我真的需要完成那句话吗


(桌面.NET Framework 3.5,Visual Studio 2008 SP1,C#,Windows 7 Enterprise x64。)

非程序集名称-命名空间;)默认名称空间,IIRC。前缀是默认名称空间;)

实际上,有一种方法,但您需要手动编辑.csproj

在.csproj文件中,找到EmbeddedResource元素,如下所示:

<EmbeddedResource Include="Resources\MyImage.png" />

添加LogicalName子元素,如下所示

<EmbeddedResource Include="Resources\MyImage.png">
  <LogicalName>MyImage.png</LogicalName>
</EmbeddedResource>

MyImage.png
进行此更改后,可以将资源提取为“MyImage.png”-默认名称空间和文件夹名称被省略


看起来此功能已可用。

好的,谢谢。。。。在这种情况下,有没有一种方法(除了删除默认名称空间)来防止这种行为?没有其他方法。删除默认名称空间并不是那么糟糕,并且不会对已经有名称空间围绕它的现有代码的其余部分产生影响。尽管它会影响创建URI的任何内容,该URI引用应用程序中未显式命名的任何内容。@will-我实际上不是从程序集中访问资源;程序集正在由一个单独的工具处理,该工具要求资源有一个特定的名称。@slugster-它对ReSharper有影响:-(.Ah,thanksAw cool,thanksAw!-)这正是我去年需要知道的。我会记在心里,以备将来参考。真是个绝妙的把戏!令人惊讶的是,VisualStudio2010属性表没有包含此选项!