当您使用 Visual Studio 将资源嵌入到 .NET 程序集中时,它会以程序集名称为前缀。但是,程序集可以具有不以程序集名称为前缀的嵌入资源。我能看到的唯一方法是使用 ILDASM 反汇编程序集,然后重新组装它,添加新资源——这可行,但是……我真的需要完成那句话吗?
(桌面 .NET Framework 3.5、Visual Studio 2008 SP1、C#、Windows 7 Enterprise x64。)
当您使用 Visual Studio 将资源嵌入到 .NET 程序集中时,它会以程序集名称为前缀。但是,程序集可以具有不以程序集名称为前缀的嵌入资源。我能看到的唯一方法是使用 ILDASM 反汇编程序集,然后重新组装它,添加新资源——这可行,但是……我真的需要完成那句话吗?
(桌面 .NET Framework 3.5、Visual Studio 2008 SP1、C#、Windows 7 Enterprise x64。)
其实是有办法的,但是需要手动编辑.csproj。
在 .csproj 文件中,找到 EmbeddedResource 元素,如下所示:
<EmbeddedResource Include="Resources\MyImage.png" />
添加一个LogicalName 子元素,如下所示。
<EmbeddedResource Include="Resources\MyImage.png">
<LogicalName>MyImage.png</LogicalName>
</EmbeddedResource>
进行此更改后,可以将资源作为“MyImage.png”获取 - 默认命名空间和文件夹名称被省略。
看起来此功能自 2005 年以来就已可用。
不是程序集名称 - 命名空间;)默认命名空间,IIRC。前缀是默认命名空间;)