在没有跳过PostSharp的情况下,在构建时安静地关闭PostSharp警告

Dav*_*fer 15 .net c# msbuild postsharp

根据推荐的PostSharp最佳实践,我的PostSharp包含在我的所有项目中.但是,我在其中一些程序集中没有任何方面或其他变换; 他们只是引用其他项目做在使用方面.

在构建时,我收到以下警告:

模块"xxxxxxx.dll"不包含任何方面或其他转换.为了提高构建时性能,请考虑通过在项目中设置编译符号(也称为常量)'SkipPostSharp'来禁用此模块的PostSharp,或者设置MSBuild属性'SkipPostSharp = True'.

感谢您的信息,PostSharp!但我"考虑禁用此模块的PostSharp",并决定不这样做.我很高兴失去一点构建时间性能,以换取后来当我决定在以前没有方面的项目中使用PostSharp时不必考虑它.

如何让PostSharp停止告诉我这个提示,而不启用SkipPostSharp?

swe*_*tfa 14

在PostSharp选项卡下的项目属性中,有一个行条目"禁用消息(分号分隔列表)"

在该字段中输入特定消息的代码.我不完全确定它是什么,但尝试PS0121

或者,如果您手动编辑项目文件"*.csproj",则可以将PostSharpDisableMessages元素添加到PropertyGroup中以获取适用的配置,如下所示.

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    <PostSharpDisabledMessages>PS0131;PS0121</PostSharpDisabledMessages>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • 这是PS0131,但谢谢!我不知道这个禁用警告部分是否存在. (4认同)

Dan*_*rod 5

您可以通过将文件添加到使用内容调用的解决方案文件夹中来解决解决方案中所有项目的这些警告PostSharp.Custom.targets:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PostSharpDisabledMessages>LA0156;PS0131</PostSharpDisabledMessages>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

LA0156;PS0131您要禁用的警告的分号分隔列表在哪里.

特别PS0131禁用

项目"<程序集名称>"不包含任何方面或其他转换.您可以通过在Visual Studio中编辑项目属性来禁用此项目的PostSharp.如果向此项目添加方面,请记住重新启用PostSharp.

并LA0156禁用

缺少关于方面类型"<完整类型名称>"的代码保存信息.代码保存指标将不准确.将[LinesOfCodeAvoided]添加到aspect类或指定advice自定义属性的LinesOfCodeAvoided属性或忽略警告LA0156.