假设您在名为App的C#应用程序中有一个名为的目录Res
,并且在该目录中具有icon.png,您大概会将其标记为EmbeddedResource并在运行时对其进行访问,以使用以下代码向您的应用程序提供图标: :
var assembly = System.Reflection.Assembly.GetEntryAssembly();
var resourceAppIcon = assembly.
GetManifestResourceStream( "App.Res.icon.png" );
// Prepare icons
if ( resourceAppIcon != null ) {
this.appIconBmp = new Bitmap( resourceAppIcon );
this.Icon = Icon.FromHandle( this.appIconBmp.GetHicon());
}
... 等等。
这段代码以前可以正常工作,但是自从我改用JetBrains Rider之后突然停止了工作。尽管资源仍然嵌入,但它们的名称已从更改namespace.directory.resource_name
为namespace.resource_name
。为了访问该图标,我必须现在写:
var resourceAppIcon = assembly.
GetManifestResourceStream( "App.icon.png" );
这是预期的吗?只是和Rider有关吗?也许与dotnetcore随附的新时代有关?我一直在努力寻找有关此方面的文档,但是没有任何运气。
编辑:我已经尝试过使用CLI使用dotnetcore,然后资源名称符合预期。看来这是Mono的问题?
我只是想重播您的问题,但是在dotnetcore(Visual Sutdio和JetBrains Rider)中,我都可以使用“ App.Res.icon.png”代码以相同的方式访问嵌入式图像资源,但不能使用“ App.icon”访问.png”。
另外,我认为您可以尝试以下方法:
var assembly = System.Reflection.Assembly.GetExecutingAssembly(); // Instead of GetEntryAssembly()
var resourceAppIcon = assembly.GetManifestResourceStream("App.Res.icon.png");
希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句