Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找不在我的WPF中的文件';s exe路径?_C#_Wpf_.net 4.0 - Fatal编程技术网

C# 查找不在我的WPF中的文件';s exe路径?

C# 查找不在我的WPF中的文件';s exe路径?,c#,wpf,.net-4.0,C#,Wpf,.net 4.0,我的exe路径是c:\dev\source\project1\bin\debug\app.exe 但是我的XML文件位于c:\dev\source\project1\file.XML 如何在运行时加载XML文件,目前我一直在硬编码绝对url,但我不想这样做 如果我更改位置或最终用户将文件移动到另一个位置,例如,file.xml被移动到project1下名为sub的子目录,那么在这种情况下会发生什么,我将不得不再次更改内容。有没有办法不必担心文件的位置?只需在app.config文件中指定Xml文

我的exe路径是
c:\dev\source\project1\bin\debug\app.exe

但是我的XML文件位于
c:\dev\source\project1\file.XML

如何在运行时加载XML文件,目前我一直在硬编码绝对url,但我不想这样做


如果我更改位置或最终用户将文件移动到另一个位置,例如,
file.xml
被移动到
project1
下名为
sub
的子目录,那么在这种情况下会发生什么,我将不得不再次更改内容。有没有办法不必担心文件的位置?

只需在app.config文件中指定Xml文件的路径即可。当路径更改时,您不必担心硬编码和EXE的编译。只需在配置中更改路径,一切正常

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xmlFile" value="c:\dev\source\project1\file.xml"/>
  </appSettings>
</configuration>

在您的解决方案资源管理器中,转到XML文件集
复制到输出目录
始终复制
复制(如果更新)
这将把XML文件的副本放在
c:\dev\source\project1\bin\debug\
中,并让您的程序引用与exe位于同一文件夹中的版本


如果用户失控,决定更改目录名和文件名,那么这不需要他们更改应用程序。配置是的,更改文件路径后,用户可以自己在配置文件中配置xml的新路径。很好,这很有效。使用
Environment.CurrentDirectory
AppDomain.CurrentDomain.BaseDirectory
更好吗?还是有更好的东西始终是可执行文件的目录?我必须将构建操作更改为内容。默认情况下,它是资源。是的,他们可能首先需要直接编辑它,但稍后,我可能会有一个GUI,或者不管他们如何编辑它。为什么你不把配置放在app.conifg文件中?我一开始从未想过这一点。