在不更改现有代码的情况下添加Post Sharp Aspect
Add Post Sharp Aspect without changing the existing code
我正在使用 PostSharp 6.4.5。我需要为现有项目添加方法级跟踪。我想记录方法何时进入和退出以及参数类型和值。我只能重建 project/solution 而不能对代码进行任何更改。我遇到了一种通过使用 XML.
添加方面来实现此目的的方法
https://doc.postsharp.net/xml-multicasting
https://doc.postsharp.net/configuration-system
https://doc.postsharp.net/logging-customizing
使用这种方法,并按照 PostSharp 的一些其他配置,我创建了一个 postsharp.config,如下所示。
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Logging xmlns="clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics">
<Profiles>
<LoggingProfile Name="detailed" IncludeSourceLineInfo="True" IncludeExecutionTime="True" IncludeAwaitedTask="True">
<DefaultOptions>
<LoggingOptions IncludeParameterType="True" IncludeThisValue="True" Level="Trace"/>
</DefaultOptions>
</LoggingProfile>
</Profiles>
</Logging>
</Project>
我还在 csproj 所在的同一目录中创建了一个 psproj 文件。以下是 psproj 文件的内容。
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Property Name="LoggingBackend" Value="console" />
<Using File=" absolute path to viewer dll \PostSharp.Patterns.Diagnostics.Weaver.dll"/>
<Multicast>
<LogAttribute xmlns="clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics" ProfileName="Default" AttributeTargetTypes="Mynamepace.*" />
</Multicast>
</Project>
然后我重建项目和运行应用程序,但我看不到任何跟踪信息。
如果我遗漏了什么,请告诉我。
第 1 步:我们构建了一个库,用于记录使用 Postsharp 的方法的进入和退出。例如:名称 --> Assembly1。命名空间 --> PostSharp.Samples.CustomLogging
第 2 步:我们将此库引用添加到所有需要跟踪的项目。我们还添加了 postsharp 依赖项。所有这些更改都是以编程方式对 csproj 文件进行的。我们还在 csproj 文件中添加了对 PostShrap.targets 的引用,如下所示。
<Import Project="path to PostSharp.targets" />
第三步:在与csproj文件同名的目录下创建*.psproj文件,与csproj文件同名。该文件的内容如下所示。
程序集名称和命名空间是从步骤 1 中引用的。
在 AttributeTargetTypes 中,可以指定正则表达式。所有符合正则表达式的方法都将在进入和退出时进行登录
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Multicast xmlns:my="clr-namespace:PostSharp.Samples.CustomLogging;assembly:Assembly1">
<my:LogMethodAttribute AttributeTargetTypes="*" />
</Multicast>
</Project>
第 4 步:重建项目。
对于许可证,需要创建一个包含许可证密钥的 postsharp.config 文件。此文件必须与 csproj 和 psproj 文件位于同一目录中。
所有方法现在都将进行跟踪,而无需对源文件进行任何更改。
所做的所有更改都将在 csproj 文件中。
希望对您有所帮助。
我正在使用 PostSharp 6.4.5。我需要为现有项目添加方法级跟踪。我想记录方法何时进入和退出以及参数类型和值。我只能重建 project/solution 而不能对代码进行任何更改。我遇到了一种通过使用 XML.
添加方面来实现此目的的方法https://doc.postsharp.net/xml-multicasting
https://doc.postsharp.net/configuration-system
https://doc.postsharp.net/logging-customizing
使用这种方法,并按照 PostSharp 的一些其他配置,我创建了一个 postsharp.config,如下所示。
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Logging xmlns="clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics">
<Profiles>
<LoggingProfile Name="detailed" IncludeSourceLineInfo="True" IncludeExecutionTime="True" IncludeAwaitedTask="True">
<DefaultOptions>
<LoggingOptions IncludeParameterType="True" IncludeThisValue="True" Level="Trace"/>
</DefaultOptions>
</LoggingProfile>
</Profiles>
</Logging>
</Project>
我还在 csproj 所在的同一目录中创建了一个 psproj 文件。以下是 psproj 文件的内容。
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Property Name="LoggingBackend" Value="console" />
<Using File=" absolute path to viewer dll \PostSharp.Patterns.Diagnostics.Weaver.dll"/>
<Multicast>
<LogAttribute xmlns="clr-namespace:PostSharp.Patterns.Diagnostics;assembly:PostSharp.Patterns.Diagnostics" ProfileName="Default" AttributeTargetTypes="Mynamepace.*" />
</Multicast>
</Project>
然后我重建项目和运行应用程序,但我看不到任何跟踪信息。 如果我遗漏了什么,请告诉我。
第 1 步:我们构建了一个库,用于记录使用 Postsharp 的方法的进入和退出。例如:名称 --> Assembly1。命名空间 --> PostSharp.Samples.CustomLogging
第 2 步:我们将此库引用添加到所有需要跟踪的项目。我们还添加了 postsharp 依赖项。所有这些更改都是以编程方式对 csproj 文件进行的。我们还在 csproj 文件中添加了对 PostShrap.targets 的引用,如下所示。
<Import Project="path to PostSharp.targets" />
第三步:在与csproj文件同名的目录下创建*.psproj文件,与csproj文件同名。该文件的内容如下所示。 程序集名称和命名空间是从步骤 1 中引用的。 在 AttributeTargetTypes 中,可以指定正则表达式。所有符合正则表达式的方法都将在进入和退出时进行登录
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
<Multicast xmlns:my="clr-namespace:PostSharp.Samples.CustomLogging;assembly:Assembly1">
<my:LogMethodAttribute AttributeTargetTypes="*" />
</Multicast>
</Project>
第 4 步:重建项目。
对于许可证,需要创建一个包含许可证密钥的 postsharp.config 文件。此文件必须与 csproj 和 psproj 文件位于同一目录中。
所有方法现在都将进行跟踪,而无需对源文件进行任何更改。 所做的所有更改都将在 csproj 文件中。
希望对您有所帮助。