我们将资源文件添加至.net C#工程时,文件的生成操作有多种可选方式。通常用的多的是两种:[嵌入的资源]和[Resource],如果从需要从代码中使用这些资源文件,不同生成操作则对应不同的引用方式:
[嵌入的资源]
Assembly assembly = Assembly.GetAssembly(typeof(App));
var stream = assembly.GetManifestResourceStream("WpfApp1.Resources.XMLFile1.xml");
[Resource]
var uristr = "pack://application:,,,/WpfApp1;component/Resources/XMLFile2.xml";
var uri = new Uri(uristr, UriKind.RelativeOrAbsolute);
var stream = Application.GetResourceStream(uri).Stream;
这里有几点要特别注意:
1. [嵌入的资源]是wpf程序的默认生成操作,[Resource]则是winfrom程序的默认生成操作;记忆中,如果在wpf程序中将图像资源的生成操作设置为[Resource],那么使用设计器的时候可以直接使用这些图像,但运行时则会报错
2. 在非wpf程序的项目(比如控制台命令程序)中,并不能生成pack前缀的uri,会报错提示 "无效的 URI: 指定的端口无效"。貌似是没有注册对pack协议支持,如何添加支持希望有大侠指点。