mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-11-02 07:26:12 +00:00
Drop stale version from README heading and remove build-time README stamping Rewrite NuGet description/product and PyPI author and project_urls Generate NuGet README with absolute URLs at pack time Add net48 reference assemblies for Linux CI and publish NT8 net48 ZIP asset
123 lines
6.7 KiB
XML
123 lines
6.7 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<QtaVersionFile>$(MSBuildThisFileDirectory)lib/VERSION</QtaVersionFile>
|
|
<QtaVersion Condition="Exists('$(QtaVersionFile)')">$([System.IO.File]::ReadAllText('$(QtaVersionFile)').Trim())</QtaVersion>
|
|
<Version Condition="'$(QtaVersion)' != ''">$(QtaVersion)</Version>
|
|
<PackageVersion Condition="'$(QtaVersion)' != ''">$(QtaVersion)</PackageVersion>
|
|
<AssemblyVersion Condition="'$(QtaVersion)' != ''">$(QtaVersion).0</AssemblyVersion>
|
|
<FileVersion Condition="'$(QtaVersion)' != ''">$(QtaVersion).0</FileVersion>
|
|
<InformationalVersion Condition="'$(QtaVersion)' != ''">$(QtaVersion)</InformationalVersion>
|
|
<LangVersion>preview</LangVersion>
|
|
<NoWarn>$(NoWarn);NU1903;NU5104</NoWarn>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<Deterministic>true</Deterministic>
|
|
<NeutralLanguage>en-US</NeutralLanguage>
|
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
|
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
|
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
|
<OutputPath>bin\$(Configuration)\</OutputPath>
|
|
<BaseIntermediateOutputPath>obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
|
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
|
<DebugType>full</DebugType>
|
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
|
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
|
<IncludeSymbols>false</IncludeSymbols>
|
|
<IsLocalBuild Condition="'$(GITHUB_ACTIONS)' == ''">true</IsLocalBuild>
|
|
|
|
<!-- AOT and Trim compatibility analyzers (build-time validation); .NET 8+ only -->
|
|
<IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">true</IsAotCompatible>
|
|
<EnableTrimAnalyzer Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">true</EnableTrimAnalyzer>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
|
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
|
<TreatWarningsAsErrors Condition="'$(Configuration)' == 'Release'">true</TreatWarningsAsErrors>
|
|
</PropertyGroup>
|
|
|
|
<!-- SARIF 2.1 output for Roslyn analyzers - all projects -->
|
|
<PropertyGroup>
|
|
<!-- Use forward slashes for cross-platform compatibility (works on Windows, Linux, macOS) -->
|
|
<SarifOutputDir>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'QuanTAlib.slnx'))/.sarif</SarifOutputDir>
|
|
<ErrorLog>$(SarifOutputDir)/$(MSBuildProjectName).sarif,version=2.1</ErrorLog>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="CreateSarifDir" BeforeTargets="CoreCompile">
|
|
<MakeDir Directories="$(SarifOutputDir)" />
|
|
<Message Importance="High" Text="SARIF output directory: $(SarifOutputDir)" />
|
|
<Message Importance="High" Text="SARIF file: $(ErrorLog)" />
|
|
</Target>
|
|
|
|
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
|
<Optimize>true</Optimize>
|
|
<DebugType>portable</DebugType>
|
|
<DebugSymbols>true</DebugSymbols>
|
|
<Deterministic>true</Deterministic>
|
|
|
|
<!-- Trim mode for library compatibility validation -->
|
|
<TrimMode>link</TrimMode>
|
|
|
|
<!-- Runtime feature switches (reduce size when library is trimmed by consumer) -->
|
|
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
|
|
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
|
|
<InvariantGlobalization>true</InvariantGlobalization>
|
|
|
|
<!-- Suppress reflection-based serialization (faster startup, smaller footprint) -->
|
|
<JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- S3604: "Remove member initializer" - null! is intentional for nullable reference types in Quantower adapters -->
|
|
<!-- S107: "Methods should not have too many parameters" - high-performance SIMD methods require multiple parameters for zero-allocation patterns -->
|
|
<!-- S1244: "Do not check floating point equality with exact values" - exact-zero div guards and exact-equality tie detection are fundamental patterns in quantitative indicators -->
|
|
<!-- MA0007: "Add comma after the last value" - trailing commas not enforced in this codebase -->
|
|
<NoWarn>$(NoWarn);S107;S1144;S1192;S1244;S1944;S2053;S2245;S2259;S2583;S2589;S3329;S3604;S3655;S3776;S3949;S3966;S4158;S4347;S5773;S6781;MA0007;MA0048;MA0051;MA0076;RCS1123;RCS1159;IDE0007</NoWarn>
|
|
</PropertyGroup>
|
|
|
|
<!-- Code Coverage Configuration (for NDepend integration) -->
|
|
<PropertyGroup Condition="'$(IsTestProject)' == 'true'">
|
|
<CollectCoverage>true</CollectCoverage>
|
|
<CoverletOutputFormat>opencover</CoverletOutputFormat>
|
|
<CoverletOutput>$(MSBuildProjectDirectory)/TestResults/</CoverletOutput>
|
|
<ExcludeByFile>**/*.Designer.cs,**/*.g.cs,**/*.g.i.cs</ExcludeByFile>
|
|
<Exclude>[xunit.*]*,[*.Tests]*</Exclude>
|
|
</PropertyGroup>
|
|
|
|
<!-- SonarLint local rule configuration (IDE-only, not committed to git)
|
|
The SonarLint VS/VSCode plugin manages .sonarlint/ locally.
|
|
SonarAnalyzer.CSharp NuGet provides build-time analysis; suppressions are in <NoWarn> above. -->
|
|
<PropertyGroup Condition="Exists('$(MSBuildThisFileDirectory).sonarlint\csharp.ruleset')">
|
|
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory).sonarlint\csharp.ruleset</CodeAnalysisRuleSet>
|
|
</PropertyGroup>
|
|
<ItemGroup Condition="Exists('$(MSBuildThisFileDirectory).sonarlint\CSharp\SonarLint.xml')">
|
|
<AdditionalFiles Include="$(MSBuildThisFileDirectory).sonarlint\CSharp\SonarLint.xml">
|
|
<Link>Properties\SonarLint.xml</Link>
|
|
</AdditionalFiles>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="10.0.401" PrivateAssets="All"/>
|
|
<PackageReference Include="Roslynator.Analyzers" Version="4.12.9">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="Meziantou.Analyzer" Version="2.0.267">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="SonarAnalyzer.CSharp" Version="10.*">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
|
|
<!-- Quantower SDK: local deployment path (override with QuantowerRoot env var).
|
|
QuantowerPath removed - was dead code running GetDirectories on every MSBuild evaluation. -->
|
|
<PropertyGroup Condition="'$(IsLocalBuild)' == 'true' AND $([MSBuild]::IsOSPlatform('Windows'))">
|
|
<QuantowerRoot Condition="'$(QuantowerRoot)' == ''">Z:\Quantower</QuantowerRoot>
|
|
</PropertyGroup>
|
|
|
|
</Project>
|