Repository navigation
Expand file tree
/
Copy pathDirectory.Build.props
More file actions
295 lines (291 loc) · 19.2 KB
/
Copy pathDirectory.Build.props
File metadata and controls
295 lines (291 loc) · 19.2 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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
<Project>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<!-- The one version of the repository. From stage 3 on, the release bot writes it: never edit it by hand. -->
<Version>0.0.19</Version>
<AssemblyVersion>$(Version).0</AssemblyVersion>
<FileVersion>$(Version).0</FileVersion>
<InformationalVersion>$(Version)</InformationalVersion>
<Authors>Leonardo Gian Pottmayer</Authors>
<Company>Pottmayer</Company>
<Copyright>Copyright (c) 2026 Leonardo Gian Pottmayer. All rights reserved.</Copyright>
<RepositoryUrl>https://github.com/leonardopottmayer/tars</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageProjectUrl>https://github.com/leonardopottmayer/tars</PackageProjectUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageTags>pottmayer;tars;dotnet;aspnetcore;ddd;cqrs;mediator;data;security;caching</PackageTags>
</PropertyGroup>
<Choose>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Multitenancy.Abstractions'">
<PropertyGroup>
<Description>Multitenancy abstractions for tenant resolution, context, catalog and execution runners in the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Multitenancy'">
<PropertyGroup>
<Description>Multitenancy implementations including tenant resolvers (subdomain, header, claim, static, composite), context, catalog and execution helpers for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Multitenancy.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core middleware for tenant resolution pipeline integration in the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Caching.Abstractions'">
<PropertyGroup>
<Description>Abstractions for the Pottmayer.Tars caching stack, including cache service, serialization, key building and entry options.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Caching'">
<PropertyGroup>
<Description>Core caching services and default implementations for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Caching.Memory'">
<PropertyGroup>
<Description>In-memory caching provider for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Caching.Redis'">
<PropertyGroup>
<Description>Redis caching provider for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Communication.Email.Abstractions'">
<PropertyGroup>
<Description>Transport-agnostic e-mail abstractions for the Pottmayer.Tars framework: IEmailSender contract, EmailMessage and delivery result.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Communication.Email'">
<PropertyGroup>
<Description>Base e-mail sending for the Pottmayer.Tars framework: logging (fake) IEmailSender and its DI registration. Swap-in seam for a real SMTP provider.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Communication.Email.MailKit'">
<PropertyGroup>
<Description>MailKit-backed SMTP e-mail provider for the Pottmayer.Tars framework: IEmailSender implementation, SMTP options and DI registration.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Communication.Telegram.Abstractions'">
<PropertyGroup>
<Description>Telegram Bot API abstractions for the Pottmayer.Tars framework: ITelegramClient contract, message/update/inline-keyboard models, classified TelegramException, MarkdownV2 escaping and webhook secret validation.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Communication.Telegram'">
<PropertyGroup>
<Description>Telegram Bot API provider for the Pottmayer.Tars framework: HttpClient-backed ITelegramClient with sending, inline keyboards, long polling, file download, webhook management, bot token masking in logs and traces, options and DI registration.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Cqrs'">
<PropertyGroup>
<Description>CQRS abstractions and behaviors for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Ddd'">
<PropertyGroup>
<Description>DDD building blocks such as entities, aggregate roots and domain event contracts for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.Abstractions'">
<PropertyGroup>
<Description>Integration messaging abstractions for the Pottmayer.Tars framework: integration event marker, event bus and handler contracts. Transport-agnostic (in-process or broker).</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging'">
<PropertyGroup>
<Description>In-process integration event bus for the Pottmayer.Tars framework: dispatches integration events to handlers in a fresh scope, plus DI registration and handler scanning. Swap-in seam for a broker-backed bus (RabbitMQ, Kafka, ...).</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.Broker'">
<PropertyGroup>
<Description>Shared broker runtime for the Pottmayer.Tars framework: integration event name-to-type registry, portable route and subscription model (broadcast, keyed, wildcard), broker capability declaration and the last-mile dispatcher. Provider-agnostic.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.MassTransit'">
<PropertyGroup>
<Description>MassTransit-backed integration event bus for the Pottmayer.Tars framework: publishing, the relay consumer that re-dispatches to IIntegrationEventHandler, and the logical entity name formatter. Transport-agnostic within MassTransit.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.MassTransit.RabbitMq'">
<PropertyGroup>
<Description>RabbitMQ transport for the Pottmayer.Tars MassTransit provider: exchange topology per event (fanout for broadcast, topic/direct/headers for routed), queue bindings from the portable subscription model, routing key application, retry and prefetch options, and DI registration.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.MassTransit.Kafka'">
<PropertyGroup>
<Description>Kafka transport for the Pottmayer.Tars MassTransit provider: topic per event type, producer and topic-endpoint registration through the MassTransit rider, consumer group and offset options, and DI registration. Broadcast delivery only — Kafka cannot filter on a per-message routing key.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.MassTransit.EntityFrameworkCore'">
<PropertyGroup>
<Description>Transactional outbox for the Pottmayer.Tars MassTransit provider, backed by MassTransit's own EF Core outbox: one UseEntityFrameworkOutbox call that works for every broker, with the bus outbox always enabled so the feature is never configured-but-inert.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Messaging.EntityFrameworkCore'">
<PropertyGroup>
<Description>Transactional in-process outbox for the Pottmayer.Tars framework, backed by EF Core: an outbox-backed integration event bus and a domain-event translation seam that write the OutboxMessage row in the producer's own transaction, plus a background relay that drains it to the local handlers with retry, dead-lettering and at-least-once delivery. Closes the dual-write gap without a broker.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Mediator.Abstractions'">
<PropertyGroup>
<Description>Mediator abstractions and pipeline contracts for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Mediator'">
<PropertyGroup>
<Description>Mediator implementation and dependency injection helpers for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Primitives'">
<PropertyGroup>
<Description>Core primitives such as result, error and optional types for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data.Abstractions'">
<PropertyGroup>
<Description>Provider-agnostic data abstractions for the Pottmayer.Tars framework: standard repository contract, unit of work, data context and keyed context factories, multi-database coordination, keys and query models.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data'">
<PropertyGroup>
<Description>Provider-agnostic data runtime for the Pottmayer.Tars framework: ambient context accessor, composite/keyed context factory, unit-of-work factory, repository resolver, multi-database coordination, QueryParams translation and shared DI helpers. Shared by the relational and document providers.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data.Relational.Abstractions'">
<PropertyGroup>
<Description>Relational data abstractions for the Pottmayer.Tars framework: relational repository contract, connection descriptors and resolvers, tenant connection/schema providers and the DbProvider enum.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data.Relational'">
<PropertyGroup>
<Description>Relational data provider for the Pottmayer.Tars framework on EF Core + Dapper: RelationalDbContext, standard repository base, EF QueryParams materialization, configuration-based connection resolution and DI helpers.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data.Document.Abstractions'">
<PropertyGroup>
<Description>Document data abstractions for the Pottmayer.Tars framework: MongoDB connection descriptors, resolution context and resolver contract.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Data.Document.MongoDB'">
<PropertyGroup>
<Description>MongoDB document data provider for the Pottmayer.Tars framework: session/transaction-backed MongoDataContext and unit of work, standard repository base implementing the provider-agnostic repository contract, configuration-based connection resolution and DI helpers.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Localization.Abstractions'">
<PropertyGroup>
<Description>Localization abstractions for the Pottmayer.Tars framework: IMessageProvider and IMessageSource contracts.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Localization'">
<PropertyGroup>
<Description>Localization runtime for Pottmayer.Tars: CompositeMessageProvider, InMemoryMessageSource and ResourceManagerMessageSource.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Core.Localization.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core localization integration for Pottmayer.Tars: request localization middleware setup and IStringLocalizer adapter.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Web.Http.Abstractions'">
<PropertyGroup>
<Description>HTTP web abstractions for the Pottmayer.Tars framework: response envelope contracts, error mapper, wrap decision and pagination info.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Web.Http'">
<PropertyGroup>
<Description>HTTP web runtime for Pottmayer.Tars: response models, default error mapper, wrap decision service and options. Has no dependency on ASP.NET Core.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Web.Http.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core HTTP integration for Pottmayer.Tars: exception filter, MVC result filter, Minimal API endpoint filter, Result extensions and response wrapper attributes.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Security.Identity.Abstractions'">
<PropertyGroup>
<Description>Identity and token-related abstractions for authentication flows in the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Security.Identity'">
<PropertyGroup>
<Description>Identity core services: JWT issuance and validation, refresh tokens, revocation, magic link and token delivery policy for the Pottmayer.Tars framework. Has no dependency on ASP.NET Core.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Security.Identity.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core adapter for Pottmayer.Tars Identity: token readers and writers for header/cookie transport, JwtBearer integration, API key authentication handler and Minimal API endpoint mapping.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.UserContext.Abstractions'">
<PropertyGroup>
<Description>User context abstractions for resolving and accessing the current user in the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.UserContext'">
<PropertyGroup>
<Description>User context core services: claims resolver, context factory, accessor and options. Has no dependency on ASP.NET Core.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.UserContext.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core adapter for Pottmayer.Tars UserContext: HttpContext-based principal accessor and its DI registration.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Observability.Abstractions'">
<PropertyGroup>
<Description>Observability abstractions for the Pottmayer.Tars framework: shared telemetry naming conventions, correlation-id constants and the redacted request URL option for clients whose URL carries a secret, with no dependencies so any building block can emit signals against them.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Observability'">
<PropertyGroup>
<Description>Observability foundation for the Pottmayer.Tars framework: OpenTelemetry traces, metrics and logs over OTLP, .NET runtime metrics, and provider-agnostic ILogger-based logging, plus options and granular DI wiring.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Observability.Serilog'">
<PropertyGroup>
<Description>Pluggable Serilog logging provider for Pottmayer.Tars observability: registers Serilog as the ILogger front-end with a console and an OTLP sink carrying trace correlation. Opt-in alternative to the core's native logging.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Observability.AspNetCore'">
<PropertyGroup>
<Description>ASP.NET Core adapter for Pottmayer.Tars observability: ASP.NET Core and HttpClient instrumentation registration and the correlation-id middleware.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Ai.Abstractions'">
<PropertyGroup>
<Description>Shared AI abstractions for the Pottmayer.Tars framework: types common to every AI capability (chat, embeddings, …), starting with the classified AiException.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Ai.Chat.Abstractions'">
<PropertyGroup>
<Description>Provider-agnostic chat-completion abstractions for the Pottmayer.Tars framework: IAiChatCompletionClient and IAiChatCompletionClientFactory contracts and the shared chat message / tool-definition / tool-call model.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Ai.Chat'">
<PropertyGroup>
<Description>Chat-completion runtime foundation for the Pottmayer.Tars framework: the keyed IAiChatCompletionClientFactory implementation that resolves providers by name and its DI registration, so an application can host several providers (openai, gemini) at once and pick per call.</Description>
</PropertyGroup>
</When>
<When Condition="'$(MSBuildProjectName)' == 'Pottmayer.Tars.Ai.Chat.Gemini'">
<PropertyGroup>
<Description>Gemini provider for the Pottmayer.Tars framework: HttpClient-backed IAiChatCompletionClient over the Generative Language generateContent API with tool calling, options and DI registration. API-key authenticated.</Description>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<Description>Reusable building blocks for the Pottmayer.Tars framework.</Description>
</PropertyGroup>
</Otherwise>
</Choose>
<ItemGroup Condition="Exists('$(MSBuildThisFileDirectory)README.md')">
<None Include="$(MSBuildThisFileDirectory)README.md" Pack="true" PackagePath="\" Visible="false" />
</ItemGroup>
<ItemGroup Condition="Exists('$(MSBuildThisFileDirectory)LICENSE')">
<None Include="$(MSBuildThisFileDirectory)LICENSE" Pack="true" PackagePath="\" Visible="false" />
</ItemGroup>
</Project>