小弟我在C#中新建了一个XML文件,请教有什么办法引用
我在C#中新建了一个XML文件,请问有什么办法引用
我在项目里新建了一个文件夹config,然后新建一config.XML文件
请问怎么在调试的时间去读取这个文件?
我用xmlFile = XmlReader.Create("Config\\config.xml", new XmlReaderSettings());
去读取,结果显示的是读 bin\debug\config\config.xml,
debug目录下没有此文件,所以总是引发异常
请问是否有更好的办法,而不是指定绝对目录去读此文件?
------解决思路----------------------
本来就应该放到debug文件夹里啊
你所有的exe和配置文件最终都应该放到debug文件夹里
不要放到工程目录里,那是源代码,跟你生成出来的文件没有一毛钱关系
------解决思路----------------------
即使你用相对路径,实现了读取源代码文件夹下的文件
那么当你打包,安装到别的机器上运行的时候,难道要把源代码也拷贝过去才行?那不可能的
打包只会打包debug文件夹
所以你应该把所有需要打包的东西都放到debug里,而不是放到别的什么地方去
------解决思路----------------------
config.XML 看你的需求,如果是内嵌文件就好办了 注意的是,内嵌文件是绑定在软件里的,一旦发布就无法更改
创建一个文件,右键点击属性, 生成操作选择 嵌入的资源
然后
Assembly asm = Assembly.GetExecutingAssembly();//读取嵌入式资源
Stream sm = asm.GetManifestResourceStream("命名空间.文件名");
StreamReader sr = new StreamReader(sm);
string ad = sr.ReadToEnd();
sr.Close();
sm.Close();
------解决思路----------------------
不能用appconfig吗,一定要自己建的话可以在项目里把config文件夹追加进来,把你的XML设置为编译时生成到debug目录下
------解决思路----------------------
你这个要设置你的xml跟项目是什么关系啊,这边有好几个设置,如下图

------解决思路----------------------
如果是debug,那么xmlFile = XmlReader.Create("Config\\config.xml", new XmlReaderSettings());里的文件路径就是bin\debug\config\config.xml,也就是exe运行的目录下面的Config\\config.xml。
这个跟项目里的文件夹路径不是一个概念
------解决思路----------------------
复制到 输出目录;得到exe的运行目录,拼接路径到你的Config文件夹
------解决思路----------------------
Config\\config.xml
这么写, 程序会直接从启动目录+ 你给出来的目录来读取文件
编译时程序启动目录不改动就是在 ......\debug\下的, 再加上你的这个目录, 那就是 ..... debug\Config目录下了..
我不知道你自己创建的XML文件到底保存在哪里, 不过你可以在工程中选择XML文件, 然后在 属性 里面, 有一个"复制文件到输出目录" 的项, 选择"始终复制" 或者"较新复制" , 这时候,你编译的时候, 就会自动拷贝你的XML文件到 debug 目录
打开时,直接
xmlFile = XmlReader.Create("config.xml", new XmlReaderSettings());
就不要再给它添个目录了.
我在项目里新建了一个文件夹config,然后新建一config.XML文件
请问怎么在调试的时间去读取这个文件?
我用xmlFile = XmlReader.Create("Config\\config.xml", new XmlReaderSettings());
去读取,结果显示的是读 bin\debug\config\config.xml,
debug目录下没有此文件,所以总是引发异常
请问是否有更好的办法,而不是指定绝对目录去读此文件?
------解决思路----------------------
本来就应该放到debug文件夹里啊
你所有的exe和配置文件最终都应该放到debug文件夹里
不要放到工程目录里,那是源代码,跟你生成出来的文件没有一毛钱关系
------解决思路----------------------
即使你用相对路径,实现了读取源代码文件夹下的文件
那么当你打包,安装到别的机器上运行的时候,难道要把源代码也拷贝过去才行?那不可能的
打包只会打包debug文件夹
所以你应该把所有需要打包的东西都放到debug里,而不是放到别的什么地方去
------解决思路----------------------
config.XML 看你的需求,如果是内嵌文件就好办了 注意的是,内嵌文件是绑定在软件里的,一旦发布就无法更改
创建一个文件,右键点击属性, 生成操作选择 嵌入的资源
然后
Assembly asm = Assembly.GetExecutingAssembly();//读取嵌入式资源
Stream sm = asm.GetManifestResourceStream("命名空间.文件名");
StreamReader sr = new StreamReader(sm);
string ad = sr.ReadToEnd();
sr.Close();
sm.Close();
------解决思路----------------------
不能用appconfig吗,一定要自己建的话可以在项目里把config文件夹追加进来,把你的XML设置为编译时生成到debug目录下
------解决思路----------------------
你这个要设置你的xml跟项目是什么关系啊,这边有好几个设置,如下图
------解决思路----------------------
如果是debug,那么xmlFile = XmlReader.Create("Config\\config.xml", new XmlReaderSettings());里的文件路径就是bin\debug\config\config.xml,也就是exe运行的目录下面的Config\\config.xml。
这个跟项目里的文件夹路径不是一个概念
------解决思路----------------------
复制到 输出目录;得到exe的运行目录,拼接路径到你的Config文件夹
------解决思路----------------------
Config\\config.xml
这么写, 程序会直接从启动目录+ 你给出来的目录来读取文件
编译时程序启动目录不改动就是在 ......\debug\下的, 再加上你的这个目录, 那就是 ..... debug\Config目录下了..
我不知道你自己创建的XML文件到底保存在哪里, 不过你可以在工程中选择XML文件, 然后在 属性 里面, 有一个"复制文件到输出目录" 的项, 选择"始终复制" 或者"较新复制" , 这时候,你编译的时候, 就会自动拷贝你的XML文件到 debug 目录
打开时,直接
xmlFile = XmlReader.Create("config.xml", new XmlReaderSettings());
就不要再给它添个目录了.