编写执行部署的.exe文件的文件

时间:2016-09-07 09:50:38

标签: c# console-application

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

在我的代码中,我实际使用此路径:Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

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

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

我尝试了很多其他语法,所有这些语法都在调试模式下工作,但在部署我的应用程序时却没有。

我想获取本地路径,执行我的.exe以在此处写入日志文件。感谢。

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

此致

2 个答案:

答案 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路径,让安装程序创建该目录。