在没有程序集前缀的 .NET 程序集中嵌入资源?
当您使用 Visual Studio 将资源嵌入到 .NET 程序集中时,它会以程序集名称为前缀。但是,程序集可以嵌入不以程序集名称为前缀的资源。我能看到做到这一点的唯一方法是使用 ILDASM 拆卸程序集,然后重新组装它,添加新资源 - 这可行,但是......我真的需要完成这句话吗?
(桌面 .NET Framework 3.5、Visual Studio 2008 SP1、C#、Windows 7 Enterprise x64。)
When you embed a resource into a .NET assembly using Visual Studio, it is prefixed with the assembly name. However, assemblies can have embedded resources that are not assembly-name-prefixed. The only way I can see to do this is to disassemble the assembly using ILDASM, then re-assemble it, adding the new resource -- which works, but... do I really need to finish that sentence?
(Desktop .NET Framework 3.5, Visual Studio 2008 SP1, C#, Windows 7 Enterprise x64.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
其实有办法,但是需要手动编辑.csproj。
在 .csproj 文件中,找到 EmbeddedResource 元素,如下所示:
添加 LogicalName 子元素,如下所示。
进行此更改后,可以将资源获取为“MyImage.png” - 省略默认命名空间和文件夹名称。
看来此功能自 2005 年起。
Actually, there is a way, but you need to edit the .csproj manually.
In the .csproj file, find the EmbeddedResource element, which will look like the following:
Add a LogicalName child element, as shown below.
After making this change, the resource can be fetched as "MyImage.png" - the default namespace and folder name are omitted.
It looks like this capability has been available since 2005.
不是程序集名称 - 命名空间;)默认命名空间,IIRC。前缀是默认命名空间;)
Not assembly name - namespace ;) Default namespace, IIRC. The prefix is the default namespace ;)