我有一个用C#编写的控制台应用程序,我想在日志文件中写下执行的输出。
在我的代码中,我实际使用此路径:Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
当我在Visual Studio中使用debug命令运行并且我的日志文件已创建且运行良好时,它工作正常。
但是当我发布我的应用程序时,路径不是执行.exe的本地路径,而是在我的AppData文件夹中......
我尝试了很多其他语法,所有这些语法都在调试模式下工作,但在部署我的应用程序时却没有。
我想获取本地路径,执行我的.exe以在此处写入日志文件。感谢。
我使用Visual Studio部署它,只需发布选项。 我得到一个setup.exe和一个.application文件
此致
答案 0 :(得分:3)
您可以尝试获取Entry Assembly(在您的情况下应该是您运行的可执行文件)。
var entryAssembly = Assembly.GetEntryAssembly();
var file = Path.Combine(
Path.GetDirectoryName(entryAssembly.Location),
entryAssembly.GetName().Name + ".log"),
答案 1 :(得分:3)
您通常永远不会希望在与安装的exe相同的目录中编写文件。调试时工作,但部署后不工作。程序没有对C:\ Program Files目录的写访问权限。它在AppData中的结果有点难以猜测,您必须故意从程序中删除清单,以便操作系统将您视为不支持UAC的遗留XP程序。 HMM。
好吧,永远不要去那里,只需使用Environment.GetFolderPath()获取AppData路径,让安装程序创建该目录。