【发布时间】:2015-03-10 15:16:18
【问题描述】:
我有一个 Visual Studio 解决方案,里面有两个项目。
第一个项目是一个 Windows 服务,该项目在一个文件夹中包含一个 XML 文件(称为配置)。此 XML 文件称为 Databases.xml。我已将 Databases.xml Build Action 从内容更改为嵌入式资源,现在我想从我的解决方案中的其他项目(即 WPF 应用程序)访问此 XML 文件。
因此,我在我的 WPF 项目中添加了对我的 Windows 服务项目的引用,现在想从我的 WPF 项目中访问我的 XML 文件。
我的问题是,当我尝试访问嵌入式资源时,我找不到要使用的类型以及我的程序集和 XML 文件的路径/命名空间应该是什么。当我使用
string[] names = this.GetType().Assembly.GetManifestResourceNames();
我的名称数组填充了我的 WPF 项目中的一些资源。我想要的是从我的 Windows 服务项目访问 ResourceNames,当然还有我的 Databases.xml 文件。
请帮助我,因为这个问题让我发疯了。
如果您需要任何其他信息,请告诉我。
我的解决方案更新 26-07-2013
我发现真正的问题是当我无法使用我的第一个 Windows 服务项目命名空间作为我的程序集的类型时。我的 Windows 服务包含一个服务类(内部带有 OnStart() 和 OnStop() 方法),为了使用这个类作为我的命名空间类型,我需要添加另一个对我的 WPF 项目的引用。我需要添加对 System.ServiceProcess 命名空间的引用,以便在我的 WPF 项目中使用我的 Windows 服务类作为我的程序集的类型。
为了访问我的 Databases.xml 文件,我想出了这个解决方案。请记住插入您自己的项目名称和类名称,而不是我的占位符(
//Remember to add a reference to System.ServiceProcess in order to be able to use your WIndows Service Project as an assembly type.
using (Stream stream = typeof(<Windows Service Project Name>.<Windows Service Class Name>).Assembly.GetManifestResourceStream("<Windows Service Project Name>.<Folder Name>.Databases.xml"))
{
//Load XML File here, for instance with XmlDocument Class
XmlDocument doc = new XmlDocument();
doc.Load(stream);
}
所以我真正的问题是我没有将 System.ServiceProcess 引用包含到我的第二个项目中。
【问题讨论】:
标签: c# xml visual-studio-2012 embedded-resource