mono was the bottleneck restricting our ability to use a newer C# version. mono 6.12 is currently available. Although poorly documented on their website, this supports C# 9. https://www.mono-project.com/docs/about-mono/versioning/#mono-source-versioning indicates mono 6.12 uses Roslyn 3.9.0. https://github.com/dotnet/roslyn/blob/main/docs/wiki/NuGet-packages.md#versioning indicates Roslyn 3.9.0 supports C# 9. This unlocks C# 8 and C# 9 features previously unavailable to us. - https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-80 - https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history#c-version-9 A newer version of StyleCop is required to avoid rules tripping up on the new syntax. Currently only prerelease versions are available but their use is encouraged https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3420#issuecomment-994899135 Fix style rule violations on existing rules where the newer language version makes some existing casts redundant or allows use of the null coalescing assignment operator.
57 lines
2.5 KiB
XML
57 lines
2.5 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<OutputType>Library</OutputType>
|
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
<Optimize>true</Optimize>
|
|
<LangVersion>9</LangVersion>
|
|
<DebugSymbols>true</DebugSymbols>
|
|
<EngineRootPath Condition="'$(EngineRootPath)' == ''">..</EngineRootPath>
|
|
<OutputPath>$(EngineRootPath)/bin</OutputPath>
|
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
<ExternalConsole>false</ExternalConsole>
|
|
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
|
<Nullable>disable</Nullable>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework Condition="'$(MSBuildRuntimeType)'!='Mono'">net6.0</TargetFramework>
|
|
<TargetFramework Condition="'$(MSBuildRuntimeType)'=='Mono'">netstandard2.1</TargetFramework>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('Windows'))">win-x64</TargetPlatform>
|
|
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('Linux'))">linux-x64</TargetPlatform>
|
|
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('OSX'))">osx-x64</TargetPlatform>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
|
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
<Optimize>false</Optimize>
|
|
<!-- Enable only for Debug builds to improve compile-time performance for Release builds -->
|
|
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
|
<!-- Enabling GenerateDocumentationFile is required for IDE0005 (Remove unnecessary import)
|
|
rule to run in command line builds. https://github.com/dotnet/roslyn/issues/41640
|
|
Enable only for Debug builds to improve compile-time performance for Release builds -->
|
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Work around an issue where Rider does not detect files in the project root using the default glob -->
|
|
<Compile Include="**/*.cs" Exclude="$(DefaultItemExcludes)" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="DisableAnalyzers" BeforeTargets="CoreCompile" Condition="'$(Configuration)'=='Release'">
|
|
<!-- Disable code style analysis on Release builds to improve compile-time performance -->
|
|
<ItemGroup Condition="'$(Configuration)'=='Release'">
|
|
<Analyzer Remove="@(Analyzer)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- StyleCop -->
|
|
<ItemGroup>
|
|
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435" PrivateAssets="All" />
|
|
</ItemGroup>
|
|
</Project>
|