我编写了第一个C#.NET WinForms应用程序,并准备发布第一个用于安装的用户。我正在使用log4net作为我的日志记录实用程序,并将其设置为:
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\"/>
<param name="AppendToFile" value="true"/>
<param name="DatePattern" value="yyyy-MM-dd' Log.txt'" />
// etc
然而,当我构建我的应用程序时,没有任何记录。在visual studio中运行时,所有内容都会转到/bin/Debug/Logs/yyyy-MM-dd Log.txt
。
如何指定程序的安装位置以及工作目录应该是什么?
请记住,这个程序相当简单(<6K行代码),我真的不知道visual studio中所有发布类型的区别。我只想将.exe分发给我的用户并跟踪C:\Program Files\myapp
等目录下的错误。我做错了什么?
编辑:当我右键单击该程序并从解决方案资源管理器中转到属性时,我正在设置以下选项(可能不正确,我以前从未这样做过):
C:\Program Files\myapp\bin\
C:\Program Files\myapp\bin\
C:\Program Files\myapp\Publish\
C:\Program Files\myapp\Publish\
这些设置是正确的还是我真的搞砸了?我想要的是提示用户安装位置(默认为:C:\ Program Files \ myapp),这个位置总是用于工作目录(所以我知道日志文件在哪里)。我如何实现这一目标?
答案 0 :(得分:1)
在Visual Studio中运行时,日志文件会写在Debug
文件夹下,就像exe所在的那样。
当您将应用程序安装到C:\Program Files\myapp
时(或任何地方),将相对于该位置创建日志,因此应该在C:\Program Files\myapp\Logs/yyyy-MM-dd Log.txt
中 - 假设用户有权创建目录和文件在那个地方。
证明这一点的最简单方法是安装应用程序并运行它。然后检查日志文件的创建位置。
答案 1 :(得分:1)
由于您使用Click Once进行部署,因此该应用程序将不在典型的C:\Program Files\myapp
目录中。
Vista和Windows 7:
C:\Users\<UserName>\AppData\Local\Apps\2.0\<obscure foler>\<obscure folder>
Windows XP:
C:\Documents and Settings\<UserName>\LocalSettings\Apps\2.0\<obscure foler>\<obscure folder>
在这些目录中挖掘,你应该看到log4net文件。
修改强>
Click Once部署的替代方法是Visual Studio安装程序:Walkthrough: Deploying a Windows-based Application。这将允许您在标准C:\Program Files\myapp
目录中安装应用程序。
我建议您使用安装程序创建一些虚拟项目,以便熟悉各种选项。最初,如果你之前没有使用它,使用安装程序创建MSI似乎令人生畏;经过一段时间的使用后,VS安装程序将变得非常容易使用。
另一个建议是在虚拟机上测试您的安装程序,这样您就不会在个人环境中无意中做任何事情。