【问题标题】:Publishing a C# application on .NET with log4net?使用 log4net 在 .NET 上发布 C# 应用程序?
【发布时间】:2011-08-30 02:09:32
【问题描述】:

我已经编写了我的第一个 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

我如何指定我的程序应该安装到哪里,以及工作目录应该是什么?

请记住,这个程序相当少(C:\Program Files\myapp 等目录下跟踪错误。我做错了什么?

编辑:当我右键单击程序并从解决方案资源管理器中转到“属性”时,我正在设置以下选项(可能不正确,我以前从未这样做过):

  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),并且该位置始终用于工作目录(所以我知道日志文件在哪里)。我如何做到这一点?

【问题讨论】:

  • 如果您想在标准C:\Program Files\myapp 中安装程序,那么您需要使用常规安装程序。单击一旦安装被设计为在用户配置文件的上下文中运行,即没有管理权限可以在其他任何地方写入。
  • Visual Studio 中是否有一个易于使用的安装程序,或者是否需要第三方程序?
  • 你是如何配置 log4net 的?如果您从文件加载配置,您可能需要检查该文件是否存在于 ClickOnce 部署中。

标签: winforms visual-studio-2008 log4net publish


【解决方案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 安装程序会变得相当好用。

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

【讨论】:

  • 我找到了一组与我的应用程序关联的目录和文件(例如图标),但没有 bin\Debug\ 目录或日志文件。现在的问题仍然存在 - 我如何设置应用程序以便它安装到 C:\Program Files\ 并且在该位置内将存在 bin\Debug\Log.txt?
  • @Joe 查看我对原始帖子的评论。简短的回答是您不能为单击一次应用程序定义安装目录位置。
【解决方案2】:

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

当您将应用程序安装到C:\Program Files\myapp(或其他任何地方)时,将相对于该位置创建日志,因此应该在C:\Program Files\myapp\Logs/yyyy-MM-dd Log.txt 中 - 假设用户有权在该位置创建目录和文件。

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

【讨论】:

  • 就是这样,没有创建目录,我已经尝试在文件系统中搜索日志文件。它永远不会被创建但在 VS 中工作
  • 他们应该,我相信我正在使用一键安装并告诉它从 C:\Program Files\myapp\Publish 下的磁盘安装
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多