我正在创建一个简单的.NET控制台应用程序,我想将文件保存在根项目的一个文件夹中,如下所示:SolutionName.ProjectName\TestData\
。我想将test.xml
放入TestData
文件夹。但是,当我去保存XDocument
时,它会将其保存到SolutionName.ProjectName\bin\x86\Debug Console\test.xml
。
在项目目录的子文件夹中保存或检索文件需要做什么?
答案 0 :(得分:2)
我之前见过这个,但从未真正试过。快速搜索并挖出来了:
System.AppDomain.CurrentDomain.BaseDirectory
为您的控制台应用程序提供一个镜头,而不是Application.StartupPath。
答案 1 :(得分:2)
您的控制台应用程序一旦编译,就不再与您的Visual Studio解决方案真正相关。最好的方法可能是将输出路径“输入”作为命令行参数的应用程序:
Public Sub Main(args as String())
' don't forget validation: handle situation where no or invalid arguments supplied
Dim outputFile = Path.Combine(args(0), "TestData", "test.xml")
End Sub
现在您可以像这样运行您的应用程序:
myapp.exe Path\To\SolutionFolder
答案 2 :(得分:0)
您可以使用System.IO命名空间获取相对于exe的目录:
var exeDirectory = Application.StartupPath;
var exeDirectoryInfo = new DirectoryInfo(exeDirectory);
var projectDirectoryInfo = exeDirectoryInfo.Parent.Parent.Parnet; // bin/x86/debug to project
var dataPath = Path.Combine(projectDirectoryInfo.FullName, "TestData");
var finalFilename = Path.Combine(dataPath, "test.xml");