写一个执行部署的.exe文件的文件

Write a file where the deployed .exe file is executed

我有一个用 C# 编写的控制台应用程序,我想将执行的输出写入日志文件。

在我的代码中实际上我使用了这条路径:Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

当我 运行 在 Visual Studio 中使用调试命令并且我的日志文件已创建并且运行良好时,它工作正常。

但是当我发布我的应用程序时,路径不是执行 .exe 的本地路径,而是在我的 AppData 文件夹中...

我尝试了许多其他语法,它们都在调试模式下工作,但在我部署我的应用程序时却不行。

我想获取本地路径,我的.exe执行的地方在这里写一个日志文件。谢谢

我用 Visual Studio 部署它,只需发布​​选项。 我得到一个 setup.exe 和一个 .application 文件

此致,

您可以尝试获取 Entry Assembly(在您的情况下应该是 运行 的可执行文件)。

var entryAssembly = Assembly.GetEntryAssembly();
var file = Path.Combine(
    Path.GetDirectoryName(entryAssembly.Location), 
    entryAssembly.GetName().Name + ".log"),

一般来说,您永远不会希望在与安装的 exe 相同的目录中写入文件。在调试时有效,但在部署后无效。程序没有对 C:\Program Files 目录的写入权限。它是如何在 AppData 中结束的有点难以猜测,您必须故意从程序中删除清单,以便 OS 将您视为不支持 UAC 的遗留 XP 程序。嗯。

好吧,永远不要去那里,只需使用 Environment.GetFolderPath() 获取 AppData 路径,让您的安装程序创建该目录。