获取文件的相对路径 C#
Get relative Path of a file C#
我目前正在用 c# visual studio 编写一个项目。
项目完整路径是:
"C:\TFS\MySolution\"
我有一个文件需要在执行过程中加载。假设文件路径是
"C:\TFS\MySolution\Project1\NeedtoLoad.xml"
不想把完整路径写死,想动态获取路径。
我使用以下行:
var path = Directory.GetCurrentDirectory();
我发现的每个方法和上面的代码行都让我得到以下路径的问题:
"C:\TFS\MySolution\Project1\bin\Debug"
而我需要的是
"C:\TFS\MySolution\Project1\"
所以我可以连接
NeedtoLoad.xml
到答案。
我当然可以:
path.Substring(0, path.IndexOf("bin\Debug"));
但它并不那么优雅。
您可以使用 Directory.GetParent
及其 Parent
成员
string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
将沿着路径树往上走两层 return "C:\TFS\MySolution\Project1"
。
如果该文件是您项目的一部分,您应该确保在构建时将其复制到项目输出中。
在解决方案资源管理器中选择文件,然后转到 Visual Studio (F4) 中的属性窗格。 Select 'Content' 为 'Build action'。现在,当您构建解决方案时,文件将被复制到输出目录(bin/Debug 或 bin/Release)。
如果 xml 是您项目的静态部分(您不会在运行时覆盖它),那么最好的办法可能是将它包含到您的 dll 中。
- 转到文件属性并将其设为嵌入式资源
直接从dll资源加载即可,例如
var asm = Assembly.GetCallingAssembly();
using (var stream = asm.GetManifestResourceStream(resource))
{
var reader = new StreamReader(stream);
return reader.ReadToEnd();
}
我目前正在用 c# visual studio 编写一个项目。 项目完整路径是:
"C:\TFS\MySolution\"
我有一个文件需要在执行过程中加载。假设文件路径是
"C:\TFS\MySolution\Project1\NeedtoLoad.xml"
不想把完整路径写死,想动态获取路径。
我使用以下行:
var path = Directory.GetCurrentDirectory();
我发现的每个方法和上面的代码行都让我得到以下路径的问题:
"C:\TFS\MySolution\Project1\bin\Debug"
而我需要的是
"C:\TFS\MySolution\Project1\"
所以我可以连接
NeedtoLoad.xml
到答案。
我当然可以:
path.Substring(0, path.IndexOf("bin\Debug"));
但它并不那么优雅。
您可以使用 Directory.GetParent
及其 Parent
成员
string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
将沿着路径树往上走两层 return "C:\TFS\MySolution\Project1"
。
如果该文件是您项目的一部分,您应该确保在构建时将其复制到项目输出中。
在解决方案资源管理器中选择文件,然后转到 Visual Studio (F4) 中的属性窗格。 Select 'Content' 为 'Build action'。现在,当您构建解决方案时,文件将被复制到输出目录(bin/Debug 或 bin/Release)。
如果 xml 是您项目的静态部分(您不会在运行时覆盖它),那么最好的办法可能是将它包含到您的 dll 中。
- 转到文件属性并将其设为嵌入式资源
直接从dll资源加载即可,例如
var asm = Assembly.GetCallingAssembly(); using (var stream = asm.GetManifestResourceStream(resource)) { var reader = new StreamReader(stream); return reader.ReadToEnd(); }