feat: initialize Geekeey Arcade .NET SDK repository
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:
Louis Seubert 2026-10-23 23:23:40 +02:00
commit 5cbf26e8a1
Signed by: louis9902
GPG key ID: 4B9DB28F826553BD
5 changed files with 1905 additions and 0 deletions

View file

@ -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>

View file

@ -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

View 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.

View 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>

View file

@ -0,0 +1,3 @@
<Project>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" Condition="'$(_MustImportMicrosoftNETSdk)' == 'true'" />
</Project>