C# 从另一个项目加载资源?
我试图从一个单独的项目加载一个XML文件;其中一个项目是一个游戏引擎,它调用XML文档读取器并获取一个路径,该路径指定文件的相对目录 来自发动机C# 从另一个项目加载资源?,c#,xml,windows-phone-7,xna,linq-to-xml,C#,Xml,Windows Phone 7,Xna,Linq To Xml,我试图从一个单独的项目加载一个XML文件;其中一个项目是一个游戏引擎,它调用XML文档读取器并获取一个路径,该路径指定文件的相对目录 来自发动机 XDocument doc; try { Stream stream = this.GetType().Assembly.GetManifestResourceStream(path); doc = XDocument.Load(stre
XDocument doc;
try
{
Stream stream = this.GetType().Assembly.GetManifestResourceStream(path);
doc = XDocument.Load(stream);
}
catch
{
doc = XDocument.Load(path);
}
来自其他项目
string filePath = "Test.xml";
Npc npc = new Npc("somename", 2,filePath);
Test.xml
驻留在其他项目的根目录中。Npc
构造函数调用Statistics
对象构造函数,然后调用加载XDocument
的方法。当发生这种情况时,文件路径
只需向下通过层即可
我已经看过并尝试了嵌入式资源示例,这是我最终想要实现的,但它对我来说不起作用
我做错了什么,在这里
更新
XDocument doc;
try
{
Stream stream = this.GetType().Assembly.GetManifestResourceStream(path);
doc = XDocument.Load(stream);
}
catch
{
doc = XDocument.Load(path);
}
我将Text.xml
更改为Chronos.Text.xml
,因为这是文件所在的位置。在我的调试器中,当我使用该流作为路径时,我看到该流只返回null:
try
{
Stream stream = this.GetType().Assembly.GetManifestResourceStream("Chronos.Test.xml"); //returns null
doc = XDocument.Load(stream); //Exception thrown
}
catch
{
doc = XDocument.Load(path); //File not found
}
嵌入的资源直接嵌入到可执行文件中
Assembly.GetManifestResourceStream()
正在尝试打开嵌入资源上的流,您应该提供以下格式的资源名称AssemblyDefaultNamespace.Directory.Filename
如果试图从其他目录打开XML文件,则必须提供指向XDocument.Load()
的完整路径,或当前项目输出目录指向该其他目录的相对路径
另一种解决方案是将另一个项目中的数据复制到您的项目中,并指定要将文件复制到输出目录。嵌入的资源直接嵌入到可执行文件中
Assembly.GetManifestResourceStream()
正在尝试打开嵌入资源上的流,您应该提供以下格式的资源名称AssemblyDefaultNamespace.Directory.Filename
如果试图从其他目录打开XML文件,则必须提供指向XDocument.Load()
的完整路径,或当前项目输出目录指向该其他目录的相对路径
另一种解决方案是将另一个项目中的数据复制到您的项目中,并指定要将文件复制到输出目录。是否存在AssemblyDefaultNamespace?我似乎找不到它。右键单击树中的项目,选择
properties
<代码>应用程序选项卡,右上角有一个名为默认名称空间
的选项。我更新了我的答案:不幸的是,在这个过程中,我收到的所有信息都是空的。我还可以做些什么来修改查询吗?确保在目录名之前添加了默认名称空间。是否有AssemblyDefaultNamespace这样的东西?我似乎找不到它。右键单击树中的项目,选择properties
<代码>应用程序选项卡,右上角有一个名为默认名称空间
的选项。我更新了我的答案:不幸的是,在这个过程中,我收到的所有信息都是空的。我还可以做些什么来修改查询吗?请确保在目录名之前添加了默认名称空间。