首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# 日志管理框架:Common.Logging和log4net

01 DLL引用 ‍common logging是一个通用日志接口框架,log4net是一个强大的具体实现框架. common logging可以把输出连接到其他非log类上, 如EntLib的日志、NLog...等‍‍‍‍‍‍‍‍‍‍‍‍‍ 项目中需要引入的DLL: Common.Logging.dll Common.Logging.Core.dll Common.Logging.Log4Net1213.dll....dll,其它的几个库会自动作为依赖项目安装都程序集下,如下图 02 配置说明 将项目的app.config文件修改如下: NETFramework,Version=v4.6.1" /> 简要说明: ①....这里配置了一个附加器:LogFileAppender(配置文件中的appender节点) 附加器(appender)可以定义多个,它只是一个声明,是否使用还是要看日志记录器是否引用了。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF 程序的编译过程

    而本文介绍 WPF 项目的编译过程,包含 WPF 额外为编译过程添加的那些扩展编译目标,以及这些扩展的编译目标如何一步步完成 WPF 项目的过程。...在需要编译一个临时程序集的时候,CoreCompile 这样的用于编译 C# 代码文件的编译目标会执行两次,第一次是编译这个临时生成的项目,而第二次才是编译原本的项目。...(Target),这个编译目标的名称由 _CompileTargetNameForLocalType 这个私有属性来决定; 当 _CompileTargetNameForLocalType 没有指定时,...生成临时程序集和临时程序集的编译过程并不在同一个编译上下文中,这也是为什么只能通过传递名称 _CompileTargetNameForLocalType 来执行,而不能直接调用这个编译目标或者设置编译目标的依赖...的情况下,无论是项目引用还是 NuGet 包引用,都会被换成普通的 dll 引用,因为这个时候目标项目都已经编译完成,包含可以被引用的程序集。

    47130

    .NET Standard SDK 样式项目中的目标框架

    包表示形式   .NET Standard 引用程序集的主要分发载体是 NuGet 包。 实现会以适用于每个 .NET 实现的各种方式提供。   NuGet 包面向一个或多个框架。...它描述并提供了对大约 40 个 .NET 库及定义 .Net Standard 的相关 API 的访问权限。 可以引用以 netstandard 为目标的其他包来使用其他 API。...如何指定目标框架   以应用或库中的框架为目标时,需要指定想要向应用或库提供的 API 集。 使用目标框架名字对象 (TFM) 在项目文件中指定目标框架。   ...目标框架名字对象 (TFM) 是一个标准化令牌格式,用于指定 .NET 应用或库的目标框架。 ? 支持的目标框架 目标框架通常由 TFM 引用。...可有条件地为每个目标框架引用程序集。

    1.4K21

    无需安装 VS2019,在 Visual Studio 2022 中编译 .NET Framework 4.543.5 这样的古老框架

    如果点开 Visual Studio 2022 的安装程序,会发现已经删除掉了 .NET Framework 4.5 的目标包了,无法通过它安装回来。..." Version="1.0.2" PrivateAssets="all" /> 请特别注意 如果你正在开发的是库项目,那么在引用此 NuGet 包之后...我也尝试过其他的解决方法,但都不能完美消除此错误提示(如果你没有 WPF 项目的话,也可以通过创建名为 GetReferenceAssemblyPaths 的空 Target 跳过检查)。...点开你项目需要的那个版本的 .NET Framework 包,然后在页面右边找到 Download package 链接,点它,下下来。...那个 TargetFrameworkRootPath 的值是 .NETFramework 文件夹的父级文件夹。

    1.7K30

    【翻译】.NET 5 Preview8发布

    C#源码生成器是一项重要的新c#编译器新功能,由于它没有任何语言语法,因此在技术上不属于C#9,请参阅新的c#源代码生成器示例,以帮助您开始使用此新功能。...他们希望这些改进也能在你的库和应用程序中带来可衡量的胜利 .NET 5.0 Target Framework 我们正在改变,.NET5.0目标框架的使用方法,下面的项目文件演示了新的.NET5.0目标框架...开发团队的Aaron Robinson一直在从事.NET Native Exports项目,该项目为将.NET组件作为本机库发布提供了更完整的体验。...dotnet发布生成的现成代码(将 PublishReadyToRun 设置为true时)是AOT的示例。当您发布准备运行的映像时,该构建会提前为您生成机器代码,而不是在运行时由JIT生成。...此更改有助于多阶段构建,其中目标的sdk和aspnet或运行时映像是同一版本(我们希望这是常见的情况)。

    81120

    BCVP第2期:项目已完成升级.NET5.0

    3关于命名的问题 这个已经不是一个同学问我了,为啥叫.NET5.0,这里是两部分,第一个就是.NET,这个是很好理解的,毕竟是大一统嘛。...然后就是5.0了,这里有个图,你一看就知道啥意思了: 就是要和.NETFramework做区分,所以取名为5的版本,是这个意思。...2、更新项目 这个就更简单了,自从netcore3.0稳定了以后,无论是升级到LTS的3.1,还是.NET5.0,都是特别简单,直接修改项目文件.csproj就行: (更新csproj文件) 当然...,你也可以右键,更新属性 (更新项目属性) 就这样,我们把每一层都更新到.NET5.0后,然后同时也把引用的nuget也都升级到最新,就ok了,这个不赘述,简单升级就行。...首先,选择SDK的时候,还是带了core,这个应该是做统一吧 (新建.NET5.0项目) 虽然这里还是带了Core,但是无碍。

    48110

    制作通过 NuGet 分发的源代码包时,如果目标项目是 WPF 则会出现一些问题(探索篇,含解决方案)

    在使用 NuGet 包来分发源代码时,如果目标项目是 WPF 项目,那么会有一大堆的问题。 本文将这些问题列举出来并进行分析。...---- 源代码包 源代码包不是 NuGet 官方的概念,而是林德熙和我在 GitHub 上做的一个项目,目的是将你的项目以源代码的形式发布成 NuGet 包。...我们是通过项目中设置了属性 BuildOutputTargetFolder 让生成的文件跑到这里来的,目的是避免安装此 NuGet 包之后,引用了我们生成的 dll 文件。...那个临时的项目文件是如何生成的; 那个临时项目文件和原始的项目文件有哪些不同; 编译临时项目文件时,哪些编译目标会执行,哪些编译目标不会执行。...在使用 ReferencePath 的情况下,无论是项目引用还是 NuGet 包引用,都会被换成普通的 dll 引用,因为这个时候目标项目都已经编译完成,包含可以被引用的程序集。

    49140

    .NET 5.0正式发布,新功能特性(翻译)

    这两个库都是多目标的,但是,我们使用5.0视图为所有目标生成注释。   我们还添加了新的注释类型。大型类在从构造函数调用的帮助器方法中实例化对象成员是很常见的。C#编译器不能遵循对对象赋值的调用流程。...这是因为该项目是多目标的,而该属性仅在.NET5.0+中受支持。使用该属性可以跳过运行时检查(在构造函数中),否则将需要这些检查来满足可空性要求,就像早期的.NET版本一样。....NET 5.0目标框架 在.NET5.0中,我们更改了用于目标框架的方法。以下项目文件演示了新的.NET5.0目标框架。...WinRT Interop(重大更改) 关于以Windows API为目标的主题,我们已经转向了一个新的模型,将WinRT API作为.NET5.0的一部分来支持。...以Windows10TFM为目标--刚才在.NET5.0TFM一节中已经讨论过了--已经足够了。如果您的目标是.NET Core 3.1或更早版本,则需要引用WinRT包。

    2.3K10

    在 Target 中获取项目引用的所有依赖(dllNuGetProject)的路径

    然而实际上如果真的编译这个项目,会发现我们得到的结果有一些问题: 实际上其值就是写到每一个 Reference 里面的字符串的集合 比如引用了 System.Xaml,那么这里就会是 System.Xaml...如果引用是通过 ProjectReference 进行的项目引用,那么这里就没有目标项目的 dll 所以,我们需要一个新的属性来查找引用的 dll。...可以看到,ReferencePath 则是将所有的 dll 的路径也输出了,而且即便是项目引用,项目编译好的 dll 的路径也在。...\v4.5\Facades\System.Xml.XmlSerializer.dll 解读原因 解析引用的 dll 的路径的 Task 是 ResolveAssemblyReference,你可以在 Microsoft.NET.Sdk...文件夹 中找到它。

    3.5K20

    .NET平台系列13 .NET5 统一平台

    .NET5 由许多单个代码库构建组成,开发者(微软员工、社区志愿者、个人开发者)可以一起工作并扩展功能,从而改进方案。 这个新项目和方向是.NET的一个重要转折点。....NET 5.0的亮点 .NET5.0 已经在dot.net 和 Bing.com (version) 2个重量级产品(网站)上运行了数月,经过了严苛的测试与实战检验。...这项工作并不简单,但其结果是在降低复杂性和维护方面向前迈出了一大步,同时将所有平台功能都统一起来。   新的应用程序开发可以为所有项目类型(包括类库)指定 .NET5.0 目标框架名字对象(TFM)。...从技术上讲,它们不属于C#9,因为它没有任何语言语法。请参阅新的C#源代码生成器示例,以帮助您开始使用此新功能。我们希望在.NET 6.0及更高版本的.NET产品中更多地使用源代码生成器。   ...为了亲自尝试新版本,我们中的一些人决定更新dotnet / iot存储库,以使用新的C#9语法并以.NET 5.0为目标。通过采用新的语法,这些更改导致删除了超过2k行代码。

    1.2K20

    用 WiX 制作安装包:为 WiX 制作的 msi 安装包添加 .NET Framework 环境检查

    本文基于前一篇文章已经建好的项目继续: 用 WiX 制作安装包:创建一个简单的 msi 安装包 添加 WixNetFxExtension 引用 在 msi 安装包项目的“Reference”上右键,“添加引用...虽然我们前面选择的 C:\Program Files (x86)\WiX Toolset v3.11\bin 看起来是个绝对路径,但实际上在 wixproj 项目里记录的是一个属性引用,因此可以很容易在团队成员之间共享和跨版本迁移...如下是 Walterlv.Installer.Msi.wixproj 项目文件中对 WixNetFxExtension 的引用代码: 1 2 3 4<WixExtension Include="WixNetFxExtension...判断 .NET Framework 是否已满足要求 因为我们已经引用了 WixNetFxExtension.dll,那里面已经写好了 .NET Framework 各版本是否存在的判断逻辑,所以我们只需要引用一下它的判断结果就好了...[CDATA[ 和 ]]> 以提升可读性。有的团队为避免出错要求强制加上此包裹,有的团队为了提升可读性建议如无必要则不要加上包裹。你也可以定义你的团队规范。

    1.2K30

    .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结

    : error MSB3644: 未找到框架“.NETFramework,Version=v4.7.1”的引用程序集。...请注意,将从全局程序集缓存(GAC)解析程序集,并将使用这些程序集替换引用程序集。因此,程序集的目标可能未正确指向您所预期的框 架 然后安装 net471的框架也安装不了,请问如何解决?...遇到的问题是:项目依赖的是.net standard 2.0 ,但是用户用的是 net461, netstand 的方法net461没有,导致程序报错!...id=56116 问题2:多个TargeFramework 导致关于Nuget包引用的问题 问题来源:这个问题是因为自己打包生成时的一个坑,忘记添加 Assembly Version了,导致发布出去的包找不到引用的程序集...结论: 由于 引用的 1.3.2 版本, 然而 CLR 在加载程序集时,找不到 Version 为 1.3.2 的DLL,于是就找原本项目引用的 1.2.3 版本,没有找到,于是报错。理清楚了。

    2.2K20

    进阶|C#利用反射方式动态调用类库里的方法(附源码)

    这个Demo里除了有利用反射动态调用类库方法,还有一个是检测当前系统安装的.netframework的版本方法,算是给大家的福利。 ? 反射的作用 1....,前阵子不是我们学习过sqlsugar的orm框架,在项目中用到的觉得挺不错的,所以就想移植过来,不过sqlsugar要求的.netframework4.5的框架,如果我们把整个项目都要升级到.netfrmework4.5...嗯,由上面的思路看,完美,然后就开始做相关的Demo,结果很快写完后测试立马被啪啪的打脸,发现低版本框架的程序不能调用高版本的类库,也就是说我的主程序一直用的.netframework4.0,不能调用为....netframework4.5的类库,所以这个方案就被否决了,不过最终不能用上,不代表没有价值,反射调用类库的方法还是要学习的,而且我也把它调用成功的封装了一个单元文件,直接引用即可。...检测.NetFrameWork版本 项目中DotNetApi.cs即是可以检测.netframework的版本,里面的GetDotNetVersion的方法就是检测方法,直接上代码: /// <summary

    2.4K40

    .NET5.0 单文件发布打包操作深度剖析

    官方的目标定义: .Net 5.0单个文件解决方案应为: 广泛兼容:可以将包含IL程序集,随时运行的程序集,复合程序集,本机二进制文件,配置文件等的应用程序打包为一个可执行文件。...以上执行的两条命令语句,会为我们生成 Linux 和 Windows 两个平台的程序包,从上图中可以看出,在打包之前,项目的各种引用依赖都被复制到了发布目录下,这也是我们之前的程序发布方式,在经过打包后...需要注意的是,该 .exe 文件并不能单独复制到别的地方运行,你必须把 .exe 当前目录完整的复制才能运行,这涉及到主机探测的问题,下面我们将会一一提到。...从上面的两种规范中可以看出,LinuX 和 Windows 都有各自的文件格式规范,而这种规范在一定程度上是不兼容的,不论是从文件结构还是解析方式;所以 .NET5.0 中的打包程序必须为不同的平台实现独立的打包器...因为解压器的实现已经转移到了 HostFxr 和 HostPolicy 中,以静态链接库的方式链接到打包器中,且该部分代码由 C++ 进行编写,鉴于 C++ 水平有限,在这里不作介绍。

    1.1K10

    Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件

    默认的 PackageReference 可以实现传递依赖,传递依赖的含义是是假定 B 项目安装了 A 库,而 C 项目依赖 B 项目,那么 C 项目将会自然拿到 A 库的 DLL 引用。...但默认的 NuGet 包的构建指导文件 targets 命令是不会在传递执行的,也就是如上的 C 项目将不会执行 B 项目安装的 A 库里面的 target 内容 有一些项目需要拷贝自定义文件,例如拷贝图片或者一些...其他的项目,如果只是做传递引用,没有直接在 csproj 上写 PackageReference 安装此库,那么不会拿到自定义输出文件 如果此时自定义的文件是 Native 的 DLL 资源,而只有在底层的库安装了库...除此之外,其他逻辑都和之前相同 也就是说如果期望在引用传递中,每个引用的项目都会执行到 NuGet 里面的 targets 和 props 文件的命令,只需要将 targets 和 props 文件放入到...BuildTransitivePackage 的 NuGet 库,让 BuildTransitivePackage.Foo2 项目引用 BuildTransitivePackage.Foo1 项目 可以看到

    72510

    3.Prometheus监控入门之指标与标签使用说明

    答: 在Prometheus中指标是基础它标志着采集或抓取监控项,并且指标的数值是有上升或者下降的变化,从而使得监控某一个时间段中某个监控项的变化分布情况。...---- 0x01 指标标签 1.标签介绍 描述: Label能够让我们知道监控项目的来源端口方法等等, 同时label也为prometheus提供了丰富的聚合和查询等功能。...标签分类 一类是测控标签,另一类是目标标签,在使用PromSQL查询时没有什么区别但是为了更好有效的使用标签,区分二者就更好了。...2) 目标标签: 它是确定了特定的监控目标即Prometheus抓取指标数据的目标,其标签作为抓取指标过程中的一部分。...Tips :注意保留标签(以下划线开头)和__name__(它实际上是表达式up的语法糖格式)不要进行使用应该避免此类命名。

    5K10
    领券