<Project>
  <Import Project="$(MSBuildThisFileFullPath).user" Condition="Exists('$(MSBuildThisFileFullPath).user')" />

  <!--
        Assembly Info properties that apply to all projects/assemblies.
    -->
  <PropertyGroup>
    <IsPackable>false</IsPackable>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)Renci.SshNet.snk</AssemblyOriginatorKeyFile>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <LangVersion>latest</LangVersion>
    <WarningLevel>9999</WarningLevel>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'Release' Or '$(CI)' != ''">
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

  <!--
        Code analysis properties.
    -->
  <PropertyGroup>
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <AnalysisLevel>preview-All</AnalysisLevel>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
  </PropertyGroup>

  <!-- don't treat NuGet Audit warnings as errors -->
  <PropertyGroup>
    <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
  </PropertyGroup>

  <!--
        Disable nullable warnings on old frameworks because of missing annotations.
  -->
  <PropertyGroup Condition=" !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0')) ">
    <NoWarn>$(NoWarn);CS8602;CS8604;CS8777</NoWarn>
  </PropertyGroup>

  <!--
        Add the stylecop config to each project.
    -->
  <ItemGroup>
    <AdditionalFiles Include="..\..\stylecop.json" Link="stylecop.json" Visible="false" />
  </ItemGroup>

  <!--
        Use fixed version of analyzers.
    -->
  <ItemGroup>
    <PackageReference Include="StyleCop.Analyzers" PrivateAssets="all" />
    <PackageReference Include="Meziantou.Analyzer" PrivateAssets="all" />
    <PackageReference Include="SonarAnalyzer.CSharp" PrivateAssets="all" />
  </ItemGroup>
</Project>
