我想在我的代码或类所在的目录中创建一个。csv文件,但该文件最终总是在"bin/debug/net6.0"或"bin/释放/net6.0"目录。
我已经尝试了以下所有方法,但文件仍然在"bin/debug/net6.0"当我在发布模式下运行代码时,它会在"bin/release/net6.0">
中创建using (StreamWriter writer = new StreamWriter("array.csv")
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string filePath = Path.Combine(directory, "array.csv");
Directory.SetCurrentDirectory(directory);
using (StreamWriter writer = new StreamWriter(filePath))
string directory = Directory.GetCurrentDirectory();
string filePath = Path.Combine(directory, "array.csv");
using (StreamWriter writer = new StreamWriter(filePath)}
我认为你需要一些关于Visual Studio的基本知识。当您首先启动程序时,它会编译程序并创建一个可执行文件。然后启动可执行文件。您可以在项目设置中设置创建可执行文件的路径。调试和发布构建可能有两种不同的路径。默认情况下,路径设置为您提到的Debug/Release目录。然后,当您的可执行文件启动时,它所在的路径就是您使用Assembly.GetExecutingAssembly(). location查询的路径。因此,您的CSV文件将与编译器生成可执行文件的路径相同。发布程序的一般行为是在没有源文件的情况下交付它,然后程序就在客户的不同目录中。在这种情况下,CSV文件也将在新目录中。为了改变你的情况,我建议以下可能性:
- 快速和肮脏:复制可执行文件连同所有额外的从编译器生成的文件,如dll文件到你的源目录,并在文件资源管理器启动它。
- 专业的解决方案应该是这样的:为您的程序创建一个特殊的目录,就像客户拥有它一样。在那里创建一个类似于&;data&;的子目录。将第一行更改为
string directory =Path.GetDirectoryName (Assembly.GetExecutingAssembly()。位置+@" data";
从编译器创建的文件中复制可执行文件和所有其他文件到程序目录并在那里启动。在这种情况下,您的csv文件将创建在程序目录下的数据目录中。