feat: initialize Geekeey Arcade .NET SDK repository
All checks were successful
CI / build (push) Successful in 3m26s
All checks were successful
CI / build (push) Successful in 3m26s
Single-commit squash of the repository history containing the Arcade .NET MSBuild SDK packages (base, Razor, Web, Test), their analyzer and editorconfig configuration, test suites, and CI workflows.
This commit is contained in:
commit
5cbf26e8a1
31 changed files with 1905 additions and 0 deletions
25
src/sdk/README.md
Normal file
25
src/sdk/README.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Geekeey.Arcade.NET.Sdk
|
||||
|
||||
Opinionated MSBuild SDKs for .NET projects with standardized build, analyzer, and editor configuration defaults:
|
||||
|
||||
- `Geekeey.Arcade.NET.Sdk` — base SDK
|
||||
- `Geekeey.Arcade.NET.Sdk.Razor` — Razor class library and Blazor projects
|
||||
- `Geekeey.Arcade.NET.Sdk.Web` — ASP.NET Core web projects
|
||||
- `Geekeey.Arcade.NET.Sdk.Test` — test projects
|
||||
|
||||
## Packaging metadata
|
||||
|
||||
Set these properties in your project file or a directory-level props file. Unless stated otherwise, defaults apply only when the property is empty.
|
||||
|
||||
| Property | Default | Description |
|
||||
| --- | --- | --- |
|
||||
| `Authors` | `The Geekeey Team` | Default authors when no value is set. |
|
||||
| `Copyright` | `Copyright (c) The Geekeey Team` | Default copyright when no value is set. |
|
||||
| `PublishRepositoryUrl` | `true` | Publishes the repository URL in packages. |
|
||||
| `IncludeSymbols` | `true` | Packs a symbol package. |
|
||||
| `SymbolPackageFormat` | `snupkg` | Format of the symbol package. |
|
||||
| `PackageReadmeFile` | `PACKAGE.md` when found | Packs a `PACKAGE.md` file from the project directory as the package readme. Not packed: `README.md` is for repository visitors. |
|
||||
| `SearchReadmeFileAbove` | `false` | When `true`, searches parent directories for a `PACKAGE.md` to pack. |
|
||||
| `PackageLicenseFile` | Detected license file | Packs and declares a `LICENSE.txt`, `LICENSE.md` or `LICENSE` file found in the project directory or a parent directory. Skipped when the project sets `PackageLicenseExpression` or `PackageLicenseFile`. |
|
||||
|
||||
Within this repository, each SDK project lives alongside its package contents in `Sdk/<PackageId>/`, so its `PACKAGE.md` is discovered automatically.
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<NoBuild>true</NoBuild>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
|
||||
<IncludeSymbols>false</IncludeSymbols>
|
||||
<Description>MSBuild SDK for Razor class library and Blazor projects with standardized build, analyzer, and editor configuration defaults.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="Sdk.props" Pack="true" PackagePath="Sdk/Sdk.props" />
|
||||
<None Include="Sdk.targets" Pack="true" PackagePath="Sdk/Sdk.targets" />
|
||||
<None Include="Geekeey.Arcade.NET.Sdk.Razor.editorconfig" Pack="true" PackagePath="configuration/Geekeey.Arcade.NET.Sdk.Razor.editorconfig" />
|
||||
<None Include="../../common/Common.props" Pack="true" PackagePath="common/Common.props" />
|
||||
<None Include="../../common/Common.targets" Pack="true" PackagePath="common/Common.targets" />
|
||||
<None Include="../../configuration/**/*" Pack="true" PackagePath="configuration/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# global_level must be higher than the base editorconfig files
|
||||
is_global = true
|
||||
global_level = 1
|
||||
29
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/PACKAGE.md
Normal file
29
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/PACKAGE.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Geekeey.Arcade.NET.Sdk.Razor
|
||||
|
||||
Opinionated MSBuild SDK for Razor class library and Blazor projects with standardized build, analyzer, and editor configuration defaults.
|
||||
|
||||
## Getting started
|
||||
|
||||
```xml
|
||||
<Project Sdk="Geekeey.Arcade.NET.Sdk.Razor/1.0.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
## What it provides
|
||||
|
||||
- Everything from the base `Geekeey.Arcade.NET.Sdk` (language, analyzer, editor, and packaging defaults), layered on top of the `Microsoft.NET.Sdk.Razor` SDK.
|
||||
- Opinionated `.editorconfig` settings for Razor projects, applied automatically via `EditorConfigFiles` (including file-based programs when `FileBasedProgram=true`).
|
||||
|
||||
## Opt-outs
|
||||
|
||||
| Property | Effect |
|
||||
| --- | --- |
|
||||
| `EnableDefaultJsonSerializationOptions=false` | Skips the `System.Text.Json` nullable annotation defaults. |
|
||||
| `IncludeDefaultBannedSymbols=false` | Skips the built-in `BannedSymbols.txt`. |
|
||||
| `BannedNewtonsoftJsonSymbols=false` | Skips the built-in `BannedSymbols.NewtonsoftJson.txt`. |
|
||||
| `SearchReadmeFileAbove=true` | Also searches parent directories for a `PACKAGE.md` to pack. |
|
||||
|
||||
See the [repository](https://code.geekeey.de/geekeey/arcade) for the full configuration.
|
||||
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/Sdk.props
Normal file
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/Sdk.props
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<_MustImportMicrosoftNETSdk Condition="'$(UsingMicrosoftNETSdk)' != 'true'">true</_MustImportMicrosoftNETSdk>
|
||||
|
||||
<CustomBeforeDirectoryBuildProps>$(CustomBeforeDirectoryBuildProps);$(MSBuildThisFileDirectory)../common/Common.props</CustomBeforeDirectoryBuildProps>
|
||||
<BeforeMicrosoftNETSdkTargets>$(BeforeMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)/../common/Common.targets</BeforeMicrosoftNETSdkTargets>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.Razor" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
<Import Project="$(MSBuildThisFileDirectory)../common/Common.props" Condition="'$(_MustImportMicrosoftNETSdk)' != 'true'" />
|
||||
|
||||
<ItemGroup>
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.Sdk.Razor.editorconfig" />
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.FileBasedProgram.editorconfig" Condition="'$(FileBasedProgram)' == 'true'" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/Sdk.targets
Normal file
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/Sdk.targets
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<Project>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Razor" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<NoBuild>true</NoBuild>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
|
||||
<IncludeSymbols>false</IncludeSymbols>
|
||||
<IsPackable>true</IsPackable>
|
||||
<!-- The packaging project is not a testing platform application itself: the Microsoft.Testing.Platform
|
||||
package flows to consumers and defaults 'IsTestingPlatformApplication' to true there. -->
|
||||
<IsTestingPlatformApplication>false</IsTestingPlatformApplication>
|
||||
<Description>MSBuild SDK for test projects with standardized build, analyzer, and editor configuration defaults.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="Sdk.props" Pack="true" PackagePath="Sdk/Sdk.props" />
|
||||
<None Include="Sdk.targets" Pack="true" PackagePath="Sdk/Sdk.targets" />
|
||||
<None Include="Geekeey.Arcade.NET.Sdk.Test.editorconfig" Pack="true" PackagePath="configuration/Geekeey.Arcade.NET.Sdk.Test.editorconfig" />
|
||||
<None Include="../../common/Common.props" Pack="true" PackagePath="common/Common.props" />
|
||||
<None Include="../../common/Common.targets" Pack="true" PackagePath="common/Common.targets" />
|
||||
<None Include="../../configuration/**/*" Pack="true" PackagePath="configuration/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# global_level must be higher than the base editorconfig files
|
||||
is_global = true
|
||||
global_level = 1
|
||||
|
||||
# Identifiers should not contain underscores (CA1707)
|
||||
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1707
|
||||
dotnet_diagnostic.CA1707.severity = none
|
||||
|
||||
# Mark members as static (CA1822)
|
||||
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
|
||||
dotnet_diagnostic.CA1822.severity = none
|
||||
|
||||
# Make method synchronous (IDE0390 and IDE0391)
|
||||
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0390-ide0391
|
||||
dotnet_diagnostic.IDE0390.severity = none
|
||||
dotnet_diagnostic.IDE0391.severity = none
|
||||
|
||||
# Remove unused parameter (IDE0060)
|
||||
# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0060
|
||||
dotnet_diagnostic.IDE0060.severity = none
|
||||
31
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/PACKAGE.md
Normal file
31
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/PACKAGE.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Geekeey.Arcade.NET.Sdk.Test
|
||||
|
||||
Opinionated MSBuild SDK for test projects with standardized build, analyzer, and editor configuration defaults.
|
||||
|
||||
## Getting started
|
||||
|
||||
```xml
|
||||
<Project Sdk="Geekeey.Arcade.NET.Sdk.Test/1.0.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
## What it provides
|
||||
|
||||
- Everything from the base `Geekeey.Arcade.NET.Sdk` (language, analyzer, editor, and packaging defaults), layered on top of the `Microsoft.NET.Sdk` SDK.
|
||||
- Marks consuming projects as test projects by setting `IsTestProject=true` automatically.
|
||||
- `Microsoft.Testing.Platform.MSBuild` integration out of the box.
|
||||
- Opinionated `.editorconfig` settings for test projects, applied automatically via `EditorConfigFiles` (including file-based programs when `FileBasedProgram=true`).
|
||||
|
||||
## Opt-outs
|
||||
|
||||
| Property | Effect |
|
||||
| --- | --- |
|
||||
| `EnableDefaultJsonSerializationOptions=false` | Skips the `System.Text.Json` nullable annotation defaults. |
|
||||
| `IncludeDefaultBannedSymbols=false` | Skips the built-in `BannedSymbols.txt`. |
|
||||
| `BannedNewtonsoftJsonSymbols=false` | Skips the built-in `BannedSymbols.NewtonsoftJson.txt`. |
|
||||
| `SearchReadmeFileAbove=true` | Also searches parent directories for a `PACKAGE.md` to pack. |
|
||||
|
||||
See the [repository](https://code.geekeey.de/geekeey/arcade) for the full configuration.
|
||||
17
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props
Normal file
17
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
<_MustImportMicrosoftNETSdk Condition="'$(UsingMicrosoftNETSdk)' != 'true'">true</_MustImportMicrosoftNETSdk>
|
||||
|
||||
<CustomBeforeDirectoryBuildProps>$(CustomBeforeDirectoryBuildProps);$(MSBuildThisFileDirectory)../common/Common.props</CustomBeforeDirectoryBuildProps>
|
||||
<BeforeMicrosoftNETSdkTargets>$(BeforeMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)/../common/Common.targets</BeforeMicrosoftNETSdkTargets>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
<Import Project="$(MSBuildThisFileDirectory)../common/Common.props" Condition="'$(_MustImportMicrosoftNETSdk)' != 'true'" />
|
||||
|
||||
<ItemGroup>
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.Sdk.Test.editorconfig" />
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.FileBasedProgram.editorconfig" Condition="'$(FileBasedProgram)' == 'true'" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets
Normal file
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<Project>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<NoBuild>true</NoBuild>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
|
||||
<IncludeSymbols>false</IncludeSymbols>
|
||||
<Description>MSBuild SDK for ASP.NET Core web projects with standardized build, analyzer, and editor configuration defaults.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="Sdk.props" Pack="true" PackagePath="Sdk/Sdk.props" />
|
||||
<None Include="Sdk.targets" Pack="true" PackagePath="Sdk/Sdk.targets" />
|
||||
<None Include="Geekeey.Arcade.NET.Sdk.Web.editorconfig" Pack="true" PackagePath="configuration/Geekeey.Arcade.NET.Sdk.Web.editorconfig" />
|
||||
<None Include="../../common/Common.props" Pack="true" PackagePath="common/Common.props" />
|
||||
<None Include="../../common/Common.targets" Pack="true" PackagePath="common/Common.targets" />
|
||||
<None Include="../../configuration/**/*" Pack="true" PackagePath="configuration/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# global_level must be higher than the base editorconfig files
|
||||
is_global = true
|
||||
global_level = 1
|
||||
29
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/PACKAGE.md
Normal file
29
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/PACKAGE.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Geekeey.Arcade.NET.Sdk.Web
|
||||
|
||||
Opinionated MSBuild SDK for ASP.NET Core web projects with standardized build, analyzer, and editor configuration defaults.
|
||||
|
||||
## Getting started
|
||||
|
||||
```xml
|
||||
<Project Sdk="Geekeey.Arcade.NET.Sdk.Web/1.0.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
## What it provides
|
||||
|
||||
- Everything from the base `Geekeey.Arcade.NET.Sdk` (language, analyzer, editor, and packaging defaults), layered on top of the `Microsoft.NET.Sdk.Web` SDK.
|
||||
- Opinionated `.editorconfig` settings for web projects, applied automatically via `EditorConfigFiles` (including file-based programs when `FileBasedProgram=true`).
|
||||
|
||||
## Opt-outs
|
||||
|
||||
| Property | Effect |
|
||||
| --- | --- |
|
||||
| `EnableDefaultJsonSerializationOptions=false` | Skips the `System.Text.Json` nullable annotation defaults. |
|
||||
| `IncludeDefaultBannedSymbols=false` | Skips the built-in `BannedSymbols.txt`. |
|
||||
| `BannedNewtonsoftJsonSymbols=false` | Skips the built-in `BannedSymbols.NewtonsoftJson.txt`. |
|
||||
| `SearchReadmeFileAbove=true` | Also searches parent directories for a `PACKAGE.md` to pack. |
|
||||
|
||||
See the [repository](https://code.geekeey.de/geekeey/arcade) for the full configuration.
|
||||
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/Sdk.props
Normal file
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/Sdk.props
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<_MustImportMicrosoftNETSdk Condition="'$(UsingMicrosoftNETSdk)' != 'true'">true</_MustImportMicrosoftNETSdk>
|
||||
|
||||
<CustomBeforeDirectoryBuildProps>$(CustomBeforeDirectoryBuildProps);$(MSBuildThisFileDirectory)../common/Common.props</CustomBeforeDirectoryBuildProps>
|
||||
<BeforeMicrosoftNETSdkTargets>$(BeforeMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)/../common/Common.targets</BeforeMicrosoftNETSdkTargets>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.Web" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
<Import Project="$(MSBuildThisFileDirectory)../common/Common.props" Condition="'$(_MustImportMicrosoftNETSdk)' != 'true'" />
|
||||
|
||||
<ItemGroup>
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.Sdk.Web.editorconfig" />
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.FileBasedProgram.editorconfig" Condition="'$(FileBasedProgram)' == 'true'" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/Sdk.targets
Normal file
3
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/Sdk.targets
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<Project>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Web" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<NoBuild>true</NoBuild>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
|
||||
<IncludeSymbols>false</IncludeSymbols>
|
||||
<Description>MSBuild SDK for .NET projects with standardized build, analyzer, and editor configuration defaults.</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="Sdk.props" Pack="true" PackagePath="Sdk/Sdk.props" />
|
||||
<None Include="Sdk.targets" Pack="true" PackagePath="Sdk/Sdk.targets" />
|
||||
<None Include="Geekeey.Arcade.NET.Sdk.editorconfig" Pack="true" PackagePath="configuration/Geekeey.Arcade.NET.Sdk.editorconfig" />
|
||||
<None Include="../../common/Common.props" Pack="true" PackagePath="common/Common.props" />
|
||||
<None Include="../../common/Common.targets" Pack="true" PackagePath="common/Common.targets" />
|
||||
<None Include="../../configuration/**/*" Pack="true" PackagePath="configuration/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# global_level must be higher than the base editorconfig files
|
||||
is_global = true
|
||||
global_level = 1
|
||||
33
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk/PACKAGE.md
Normal file
33
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk/PACKAGE.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Geekeey.Arcade.NET.Sdk
|
||||
|
||||
Opinionated MSBuild SDK for .NET projects with standardized build, analyzer, and editor configuration defaults.
|
||||
|
||||
## Getting started
|
||||
|
||||
```xml
|
||||
<Project Sdk="Geekeey.Arcade.NET.Sdk/1.0.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
## What it provides
|
||||
|
||||
- Sensible language defaults: `ImplicitUsings` and `Nullable` enabled, extra global usings for `System.Diagnostics.CodeAnalysis`, `System.Globalization`, and `System.Text`.
|
||||
- Code quality defaults: `AnalysisLevel=latest`, `AnalysisMode=Recommended`, `EnforceCodeStyleInBuild`, nullable warnings as errors, and all warnings as errors on CI (`ContinuousIntegrationBuild`).
|
||||
- Opinionated `.editorconfig` settings, applied via `EditorConfigFiles` (including file-based programs when `FileBasedProgram=true`).
|
||||
- Banned API analysis with `Microsoft.CodeAnalysis.BannedApiAnalyzers` (with a built-in `BannedSymbols.txt`), public API analysis with `Microsoft.CodeAnalysis.PublicApiAnalyzers`, and RESX source generation with `Microsoft.CodeAnalysis.ResxSourceGenerator`.
|
||||
- `System.Text.Json` defaults that honor nullable annotations and `required` constructor parameters. Opt out with `EnableDefaultJsonSerializationOptions=false`.
|
||||
- NuGet packaging metadata defaults: `Authors`, `Copyright`, `PublishRepositoryUrl`, symbol packages (`snupkg`), and automatic packaging of a `PACKAGE.md` readme, `THIRD-PARTY-NOTICES` file, and a detected license file.
|
||||
|
||||
## Opt-outs
|
||||
|
||||
| Property | Effect |
|
||||
| --- | --- |
|
||||
| `EnableDefaultJsonSerializationOptions=false` | Skips the `System.Text.Json` nullable annotation defaults. |
|
||||
| `IncludeDefaultBannedSymbols=false` | Skips the built-in `BannedSymbols.txt`. |
|
||||
| `BannedNewtonsoftJsonSymbols=false` | Skips the built-in `BannedSymbols.NewtonsoftJson.txt`. |
|
||||
| `SearchReadmeFileAbove=true` | Also searches parent directories for a `PACKAGE.md` to pack. |
|
||||
|
||||
See the [repository](https://code.geekeey.de/geekeey/arcade) for the full configuration.
|
||||
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk/Sdk.props
Normal file
16
src/sdk/Sdk/Geekeey.Arcade.NET.Sdk/Sdk.props
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<_MustImportMicrosoftNETSdk Condition="'$(UsingMicrosoftNETSdk)' != 'true'">true</_MustImportMicrosoftNETSdk>
|
||||
|
||||
<CustomBeforeDirectoryBuildProps>$(CustomBeforeDirectoryBuildProps);$(MSBuildThisFileDirectory)../common/Common.props</CustomBeforeDirectoryBuildProps>
|
||||
<BeforeMicrosoftNETSdkTargets>$(BeforeMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)/../common/Common.targets</BeforeMicrosoftNETSdkTargets>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
|
||||
<Import Project="$(MSBuildThisFileDirectory)../common/Common.props" Condition="'$(_MustImportMicrosoftNETSdk)' != 'true'" />
|
||||
|
||||
<ItemGroup>
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.Sdk.editorconfig" />
|
||||
<EditorConfigFiles Include="$(MSBuildThisFileDirectory)../configuration/Geekeey.Arcade.NET.FileBasedProgram.editorconfig" Condition="'$(FileBasedProgram)' == 'true'" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue