2011-08-29 50 views
2

我写了我的第一个C#.NET WinForms应用程序,并准备发布第一个版本供用户安装。我使用log4net的是我的日志实用程序,并将它设置为:使用log4net在.NET上发布C#应用程序?

<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。我究竟做错了什么?

编辑:当我右键单击该程序并选择属性从Solution Explorer中,我设置了以下选项(可能是不正确的,我从来没有这样做过):

  1. 建设 - >所有配置 - >输出路径:C:\Program Files\myapp\bin\
  2. 调试 - >所有配置 - >工作目录:C:\Program Files\myapp\bin\
  3. 发布 - >发布地点:C:\Program Files\myapp\Publish\
  4. 发布向导 - >发布地点:C:\Program Files\myapp\Publish\
  5. 发布向导 - >从CD-ROM或DVD-ROM
  6. 发布向导 - >应用程序将不会检查更新

这些是设置正确或我是否真的搞砸了?我想为用户提示安装位置(默认为:C:\ Program Files \ myapp),并且此位置始终用于工作目录(所以我知道日志文件的位置)。我如何实现这一目标?

+0

如果您想将程序安装在标准的'C:\ Program Files \ myapp'中,那么您需要使用常规安装程序。单击一次安装旨在在用户配置文件的上下文中运行,即没有管理权限可在其他地方写入。 –

+0

在Visual Studio中是否有易于使用的安装程序,还是需要第三方程序? –

+0

看到我更新的答案。 –

回答

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的文件。

编辑
另一种单击一次部署是Visual Studio安装程序:Walkthrough: Deploying a Windows-based Application。这将允许您在标准C:\Program Files\myapp目录中安装应用程序。

我建议你用安装程序创建几个虚拟项目,以获得一些熟悉各种选项。最初,如果您之前没有使用过安装程序,那么使用安装程序创建MSI可能会令人生畏;经过一些使用后,VS安装程序将变得非常容易使用。

另一个建议是在虚拟机上测试你的安装程序,这样你就不会在你的个人环境中无意中做任何事情。

+0

我发现了一组与我的应用程序相关的目录和文件(如图标),但没有bin \ Debug \目录或日志文件。现在的问题仍然是 - 我如何设置应用程序以便将其安装到C:\ Program Files \ <用户选择的目录>,并且在该位置将存在bin \ Debug \ Log.txt? –

+0

@Joe看到我对原帖的评论。简短的答案是你无法为一次点击应用定义安装目录位置。 –

1

在Visual Studio中运行时,日志文件被写入Debug文件夹下,因为这是exe的位置。

当您安装应用程序C:\Program Files\myapp(或者曾经)的日志将被相对于该位置创建的,因此应该在C:\Program Files\myapp\Logs/yyyy-MM-dd Log.txt - 假设用户有权创建在该位置的目录和文件。

证明这一点最简单的方法是安装应用程序并运行它。然后检查日志文件的创建位置。

+0

就是这样,目录没有创建,我试着在文件系统中搜索日志文件。它永远不会被创建,但在VS –

+0

里面工作@Joe - 啊 - 用户是否有权使用“C:\ Program Files”? – ChrisF

+0

他们应该,我相信我使用一键安装,并告诉它从磁盘安装在C:\ Program Files \ myapp \ Publish –