-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
188 lines (160 loc) · 8.04 KB
/
Directory.Build.props
File metadata and controls
188 lines (160 loc) · 8.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?xml version="1.0" encoding="utf-8"?>
<Project>
<!-- Version Information (can be overridden by build scripts) -->
<PropertyGroup>
<VersionPrefix>0.10.6</VersionPrefix>
<AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
<FileVersion>$(VersionPrefix)</FileVersion>
<PackageVersion Condition="'$(PackageVersion)' == ''">$(VersionPrefix)</PackageVersion>
</PropertyGroup>
<!-- Global Properties for all FileFlux projects -->
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
<!-- Common Package Information -->
<PropertyGroup>
<Authors>iyulab</Authors>
<Company>iyulab</Company>
<Product>FileFlux</Product>
<Copyright>Copyright © $([System.DateTime]::Now.ToString("yyyy")) iyulab</Copyright>
<!-- Repository Information -->
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/iyulab/FileFlux</RepositoryUrl>
<RepositoryBranch>main</RepositoryBranch>
<PackageProjectUrl>https://github.com/iyulab/FileFlux</PackageProjectUrl>
<!-- License and Legal -->
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<!-- Package Icon -->
<PackageIcon>logo.png</PackageIcon>
<!-- Common Tags -->
<PackageTagsBase>rag;document;processing;chunking;ai;llm;fileflux</PackageTagsBase>
</PropertyGroup>
<!-- Build Configuration -->
<PropertyGroup>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<!-- Assembly Information -->
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>true</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>true</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>
<!-- Local development packages (auto-detected, ignored in CI) -->
<PropertyGroup Condition="Exists('$(MSBuildThisFileDirectory)../../local-packages')">
<RestoreAdditionalProjectSources>$(RestoreAdditionalProjectSources);$(MSBuildThisFileDirectory)../../local-packages</RestoreAdditionalProjectSources>
</PropertyGroup>
<!-- Code Quality and Analysis -->
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<CodeAnalysisRuleSet Condition="Exists('$(MSBuildThisFileDirectory)FileFlux.ruleset')">$(MSBuildThisFileDirectory)FileFlux.ruleset</CodeAnalysisRuleSet>
<!-- Performance optimizations -->
<Optimize Condition="'$(Configuration)' == 'Release'">true</Optimize>
<DebugType Condition="'$(Configuration)' == 'Release'">portable</DebugType>
<DebugType Condition="'$(Configuration)' == 'Debug'">full</DebugType>
</PropertyGroup>
<!-- Documentation and Warnings -->
<PropertyGroup>
<!-- Suppress common warnings for auto-generated files -->
<NoWarn>$(NoWarn);CS1591</NoWarn> <!-- Missing XML comment for publicly visible type or member -->
<!-- CS3*: CLS compliance (not applicable) -->
<NoWarn>$(NoWarn);CS3001;CS3002;CS3003;CS3009;CS3016</NoWarn>
<!-- TreatWarningsAsErrors=true covers all nullable warnings -->
</PropertyGroup>
<!-- Source Link for debugging -->
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
<!-- Common Dependencies -->
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
</ItemGroup>
<!-- Package Icon for packable projects -->
<ItemGroup Condition="'$(IsPackable)' == 'true'">
<None Include="$(MSBuildThisFileDirectory)src\logo.png" Pack="true" PackagePath="" />
</ItemGroup>
<!-- Project-specific overrides using conditions -->
<!-- FileFlux - Main NuGet package -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'FileFlux'">
<IsPackable>true</IsPackable>
<PackageId>FileFlux</PackageId>
<Title>FileFlux - Document Processing SDK for RAG</Title>
<Description>Complete document processing SDK optimized for RAG systems. Transform PDF, DOCX, Excel, PowerPoint, Markdown and other formats into high-quality chunks with intelligent semantic boundary detection. Includes advanced chunking strategies, metadata extraction, and performance optimization.</Description>
<PackageTags>$(PackageTagsBase);complete;sdk;readers;pdf;docx;excel;powerpoint;markdown;semantic;intelligent</PackageTags>
<PackageReleaseNotes>Complete FileFlux SDK with document readers, intelligent chunking strategies, and RAG optimization</PackageReleaseNotes>
</PropertyGroup>
<!-- FileFlux.CLI - Local testing tool (not published to NuGet) -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'FileFlux.CLI'">
<IsPackable>false</IsPackable>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<OutputType>Exe</OutputType>
<!-- CLI tool uses logging for diagnostic output, not production perf -->
<NoWarn>$(NoWarn);CA1848;CA1873</NoWarn>
</PropertyGroup>
<!-- Tests Project -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'FileFlux.Tests'">
<IsPackable>false</IsPackable>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<!-- Test projects use logging for diagnostic output, not production perf -->
<NoWarn>$(NoWarn);CA1848;CA1873</NoWarn>
</PropertyGroup>
<!-- Sample App Project -->
<PropertyGroup Condition="'$(MSBuildProjectName)' == 'FileFlux.SampleApp'">
<IsPackable>false</IsPackable>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<OutputType>Exe</OutputType>
<!-- Sample projects use logging for demonstration, not production perf -->
<NoWarn>$(NoWarn);CA1848;CA1873</NoWarn>
</PropertyGroup>
<!-- Common item groups for specific project types -->
<ItemGroup Condition="$(MSBuildProjectName.Contains('Tests'))">
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" />
</ItemGroup>
<!-- Global AssemblyInfo -->
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>FileFlux.Tests</_Parameter1>
</AssemblyAttribute>
<AssemblyAttribute Include="System.CLSCompliantAttribute">
<_Parameter1>true</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
<!-- Global using statements -->
<ItemGroup>
<Using Include="System" />
<Using Include="System.Collections.Generic" />
<Using Include="System.Threading" />
<Using Include="System.Threading.Tasks" />
</ItemGroup>
<!-- Test-specific global usings -->
<ItemGroup Condition="$(MSBuildProjectName.Contains('Tests'))">
<Using Include="Xunit" />
<Using Include="FluentAssertions" />
</ItemGroup>
<!-- Performance and optimization settings -->
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<Deterministic>true</Deterministic>
<PathMap>$(MSBuildProjectDirectory)=.</PathMap>
</PropertyGroup>
<!-- Directory structure validation -->
<Target Name="ValidateDirectoryStructure" BeforeTargets="Build" Condition="'$(BuildingProject)' == 'true'">
<Message Text="Building $(MSBuildProjectName) v$(PackageVersion)" Importance="high" />
</Target>
</Project>