Тихие предупреждения PostSharp при сборке без пропусков PostSharp

У меня есть PostSharp, включенный во все мои проекты, в соответствии с рекомендуемыми рекомендациями для PostSharp. Однако у меня нет каких-либо аспектов или других преобразований в некоторых из этих сборок; они просто ссылаются на другие проекты, которые имеют аспекты использования.

Во время сборки я получаю следующее предупреждение:

Модуль "xxxxxxx.dll" не содержит какого-либо аспекта или другого преобразования. Для повышения производительности за время сборки подумайте о отключении PostSharp для этого модуля, установив в свой проект символ компиляции (aka constant) "SkipPostSharp" или установите для свойства MSBuild "SkipPostSharp = True".

Спасибо за информацию, PostSharp! Но я "решил отключить PostSharp для этого модуля" и решил не делать этого. Я очень счастлив потерять крошечную производительность времени сборки, в обмен на то, что не нужно думать об этом позже, когда я решаю использовать PostSharp в проекте, ранее лишенном аспектов.

Как мне заставить PostSharp перестать рассказывать мне об этом намеке и не разрешать SkipPostSharp?

Ответы

Ответ 1

В ваших свойствах проекта на вкладке 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>

Ответ 2

Вы можете отключить эти предупреждения от всех проектов в своем решении, добавив файл в папку решений с именем 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>

Где LA0156;PS0131 - это список разделенных запятой предупреждений, которые вы хотите отключить.

В частности PS0131 отключает

Проект '< имя сборки > ' не содержит какого-либо аспекта или другого преобразования. Вы можете отключить PostSharp для этого проекта, отредактировав свойства проекта в Visual Studio. Не забудьте включить PostSharp обратно, если вы добавите аспект в этот проект.

И LA0156 отключает

Отсутствует информация о сохранении кода по типу аспекта "< полное имя типа > ". Показатели с сохранением кода будут неточными. Добавьте [LinesOfCodeAvoided] в класс аспекта или укажите свойство LinesOfCodeAvoided настраиваемого атрибута совета или игнорируйте предупреждение LA0156.