在 WinForms 应用程序中引用 log4net DLL 的正确方法
Posted
技术标签:
【中文标题】在 WinForms 应用程序中引用 log4net DLL 的正确方法【英文标题】:Correct way to reference log4net DLL in WinForms application 【发布时间】:2013-01-01 17:28:06 【问题描述】:我的 WinForms 2.0 应用程序有 2 个程序集。第一个程序集处理 GUI 和项目特定代码,第二个程序集是我放置所有可重用代码的地方。这两个项目都是解决方案的一部分;第一个项目引用第二个项目。
现在两个项目都需要引用 log4net.dll 文件。我是否应该在每个项目中添加一个引用,指向我下载 log4net 源代码并构建它的文件夹?还是应该将 log4net.dll 文件复制到每个项目目录中?
或者我是否也应该将整个 log4net 源代码项目添加为解决方案的一部分,这样我就不会受到 log4net 未来任何更改破坏我现有应用程序的影响?
其中一项要求是 log4net 中的未来版本更改可能会破坏现有代码,但对我的项目的影响应该最小。
最佳做法是什么?
我正在使用 C# 2.0。
谢谢,
【问题讨论】:
如果您不更改 dll,为什么 log4net 中的未来版本更改会影响您的项目? 【参考方案1】:我通常构建项目并将 log4net dll 放在 libs 文件夹中,这是一个解决方案文件夹。这两个项目都引用了这个 dll(libs 文件夹)。
【讨论】:
嗯...我想我还需要将 log4net.xml 文件放在这个解决方案文件夹中?抱歉,这可能是一个基本问题,但我刚刚开始使用 log4net。另外我以前从未使用过解决方案文件夹。我现在刚刚创建了一个,但它似乎没有在文件系统中创建任何文件夹。那我还不如在硬盘里建一个文件夹,把log4net文件放在那里,两个项目都引用呢? 您不需要 XML doc 文件,但可以将它放在那里。在磁盘上创建文件夹并作为解决方案文件夹。 再次抱歉,如果我必须在磁盘上创建一个文件夹,为什么我需要创建一个解决方案文件夹?从我在其他线程中阅读的内容来看,解决方案文件夹和物理文件夹不同步;什么是物理文件夹无法实现,只能通过解决方案文件夹实现? 你不必,但我更喜欢在VS中查看所有数据 我还是不明白……即使只有一个物理文件夹,我也可以在VS中添加那个文件夹,对吧?【参考方案2】:学习依赖 NuGet,它会自动管理您的依赖项并将它们存储在适当的文件夹中。
对于 log4net,兼容性已经被破坏,因为混乱的密钥和损坏的方法合同。没有人知道如何解决这个烂摊子:
http://netpl.blogspot.com/2012/03/pathetic-breaking-change-between.html
【讨论】:
【参考方案3】:我应该将 log4net.dll 文件复制到每个项目目录中吗?
没有。将其保存在单独的依赖项文件夹中。此文件夹对于解决方案中的所有项目应该是通用的。您应该在每个项目(需要此组件)中引用 log4net.dll。
或者我是否也应该添加整个 log4net 源代码项目作为解决方案的一部分,这样我就不会受到 log4net 未来任何更改破坏我现有应用程序的影响?
这不是必需的。 仅当您在 log4net.dll 中遇到任何问题并想要自行诊断时才需要。
【讨论】:
以上是关于在 WinForms 应用程序中引用 log4net DLL 的正确方法的主要内容,如果未能解决你的问题,请参考以下文章