写一个执行部署的.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 路径,让您的安装程序创建该目录。
我有一个用 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 路径,让您的安装程序创建该目录。