Files
QuanTAlib/Directory.Build.props
T

116 lines
5.6 KiB
XML
Raw Normal View History

2024-09-22 17:31:24 -07:00
<Project>
<PropertyGroup>
2024-10-07 21:41:26 -07:00
<LangVersion>preview</LangVersion>
2024-11-07 21:40:02 -08:00
<NoWarn>$(NoWarn);NU1903;NU5104;NETSDK1057</NoWarn>
2024-09-22 17:31:24 -07:00
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Deterministic>true</Deterministic>
2024-10-07 21:41:26 -07:00
<NeutralLanguage>en-US</NeutralLanguage>
2024-09-22 17:31:24 -07:00
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
<PlatformTarget>AnyCPU</PlatformTarget>
2024-10-27 16:11:08 -07:00
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
2024-09-22 17:31:24 -07:00
<OutputPath>bin\$(Configuration)\</OutputPath>
<BaseIntermediateOutputPath>obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
2024-09-24 16:41:26 -07:00
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
2024-09-22 17:31:24 -07:00
<DebugType>full</DebugType>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>false</IncludeSymbols>
2024-09-22 18:06:43 -07:00
<IsLocalBuild Condition="'$(GITHUB_ACTIONS)' == ''">true</IsLocalBuild>
<!-- AOT and Trim compatibility analyzers (build-time validation) -->
<IsAotCompatible>true</IsAotCompatible>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
</PropertyGroup>
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<TreatWarningsAsErrors Condition="'$(Configuration)' == 'Release'">true</TreatWarningsAsErrors>
2024-10-05 19:36:01 -07:00
</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>
2024-10-05 19:36:01 -07:00
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Optimize>true</Optimize>
<DebugType>portable</DebugType>
2024-11-04 07:21:19 -08:00
<DebugSymbols>true</DebugSymbols>
2024-10-05 19:36:01 -07:00
<Deterministic>true</Deterministic>
<!-- Trim mode for library compatibility validation -->
<TrimMode>link</TrimMode>
<!-- Runtime feature switches (reduce size when library is trimmed by consumer) -->
2024-10-05 19:36:01 -07:00
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
<InvariantGlobalization>true</InvariantGlobalization>
<!-- Suppress reflection-based serialization (faster startup, smaller footprint) -->
<JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>
2024-10-14 08:45:32 -07:00
</PropertyGroup>
2024-11-04 07:21:19 -08:00
<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 -->
<!-- MA0007: "Add comma after the last value" - trailing commas not enforced in this codebase -->
<NoWarn>$(NoWarn);S107;S1144;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>
2024-09-22 17:31:24 -07:00
</PropertyGroup>
2024-11-04 07:21:19 -08:00
<!-- SonarLint local rule configuration -->
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory).sonarlint\csharp.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<AdditionalFiles Include="$(MSBuildThisFileDirectory).sonarlint\CSharp\SonarLint.xml">
<Link>Properties\SonarLint.xml</Link>
</AdditionalFiles>
</ItemGroup>
2024-09-22 17:31:24 -07:00
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All"/>
<PackageReference Include="GitVersion.MsBuild" Version="6.5.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<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>
2024-09-22 17:31:24 -07:00
</ItemGroup>
2024-10-26 23:54:55 -07:00
<PropertyGroup Condition="'$(IsLocalBuild)' == 'true' AND $([MSBuild]::IsOSPlatform('Windows'))">
<QuantowerRoot Condition="'$(QuantowerRoot)' == ''">Z:\Quantower</QuantowerRoot>
<QuantowerPath Condition="Exists('$(QuantowerRoot)\TradingPlatform')">$([System.IO.Directory]::GetDirectories("$(QuantowerRoot)\TradingPlatform", "v1*")[0])</QuantowerPath>
2024-09-22 17:31:24 -07:00
</PropertyGroup>
2024-09-24 16:41:26 -07:00
</Project>