Aksio.Defaults
1.6.10
Prefix Reserved
dotnet add package Aksio.Defaults --version 1.6.10
NuGet\Install-Package Aksio.Defaults -Version 1.6.10
<PackageReference Include="Aksio.Defaults" Version="1.6.10" />
paket add Aksio.Defaults --version 1.6.10
#r "nuget: Aksio.Defaults, 1.6.10"
// Install Aksio.Defaults as a Cake Addin #addin nuget:?package=Aksio.Defaults&version=1.6.10 // Install Aksio.Defaults as a Cake Tool #tool nuget:?package=Aksio.Defaults&version=1.6.10
Defaults
This repository contains the default setup for projects with properties for how they should build and also static code analysis for projects. It contains custom rules and the default rule-sets with the tuned rules we care about.
Read more about the custom analyzers here.
Getting Started
In your project all you need is to add a PackageReference to the package.
The dotnet
tool-chain will during build include any .props
or .targets
files found in the package by convention.
From the .props
file you'll get a lot of default configuration set up, it will put in package information saying it is an Aksio package
and all the defaults of Aksio. This can be overridden if you're only interested in parts of the configuration.
If you're using an IDE such as Visual Studio, add a reference to the Aksio.Defaults package from the UI.
If you're using the dotnet tool you add the reference by doing the following from your terminal:
$ dotnet add package Aksio.Defaults
Or manually add the following to your .csproj
- obviously for good measure,
you should just add the <PackageReference>
inside an existing <ItemGroup>
with package references.
<ItemGroup>
<PackageReference Include="Aksio.Defaults" Version="1.*" PrivateAssets="All"/>
</ItemGroup>
Note: The
PrivateAssets="All"
is important to not let the rules and setup affect any consumer of your package.
By using a wildcard for minor in the version of the packages, you're guaranteed to have the latest of the package.
For your spec projects there is a second package with specific rules for that context as we tend to write the
specs differently; Aksio.Defaults.Specs
.
MSBuild
This project relies heavily on MSBuild and its capabilities. It leverages both reserved well known properties and common project properties. It takes advantage of a feature in MSBuild that by convention will include props from a file named the same as its package name in any consumers. In our case this is the Aksio.Defaults.props and Aksio.Defaults.Specs.props.
Static Code Analysis
The props files configures a default behavior for builds with a common set of static code analysis rules and stylecop rules. In addition to this it provides a set of default NuGet metadata properties to ease the creation of projects that are to be published as NuGet packages.
Read more about the ruleset format and the default rulset. In addition, we leverage a 3rd party ruleset - read more about the different rules here.
This repository also adds custom Aksio rules. Read the documentation on the different rules.
With the introduction of Global AnalyserConfig one can
take typical things one would hav ein .editorconfig
files and package for reuse. This project does so as well by adding a global editorconfig.
For examples on how these can be set up look here or here.
Debug vs Release
The default behavior of the static code analysis is to have it disabled while building with the Debug Configuration. Typically for CI/CD pipelines we run in Release and will therefor run all rules there.
If one wants to check things before committing or finalizing a pull request for instance, one could run the build with Release configuration
$ dotnet build --configuration Release
You can still enable the static code analysis rules by adding the following PropertyGroup to your .csproj or Directory.Build.props file:
<PropertyGroup>
<RunAnalyzers>True</RunAnalyzers>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
<MSBuildTreatWarningsAsErrors>True</MSBuildTreatWarningsAsErrors>
</PropertyGroup>
Note: It is also possible to run this command as a Git Hook either on commit, pre-push or pre-receive for instance, read more here. Since most hooks run on the client and is not configured for the repository, its harder to share in a team. Recommend reading this.
Packages
NuGet packages that are published on the public NuGet feed should adhere to the defined best practices. The default props file puts in most of the metadata, but some of it is specific to each project and should be included specifically in the .csproj or Directory.Build.props.
Add the following properties and configure them according to your project:
<PropertyGroup>
<IsPackable>true</IsPackable>
<RepositoryUrl>https://github.com/aksio-system/{repository}</RepositoryUrl>
<PackageProjectUrl>https://github.com/aksio-system/{repository}</PackageProjectUrl>
</PropertyGroup>
In addition you might want to include the README file of your project. Add the following with the correct relative filepath to the README file:
<PropertyGroup>
<PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup>
<ItemGroup>
<Content Include="../README.md" PackagePath="/" />
</ItemGroup>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Meziantou.Analyzer (>= 1.0.680)
- Microsoft.CodeAnalysis.CSharp.CodeStyle (>= 4.0.1)
- Microsoft.CodeAnalysis.NetAnalyzers (>= 6.0.0)
- Roslynator.Analyzers (>= 3.3.0)
- StyleCop.Analyzers (>= 1.2.0-beta.376)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.6.10 | 28,386 | 5/11/2023 |
1.6.9 | 104 | 5/11/2023 |
1.6.8 | 3,835 | 10/14/2022 |
1.6.7 | 1,794 | 9/30/2022 |
1.6.6 | 695 | 9/6/2022 |
1.6.6-pr83.33f98e0 | 108 | 9/30/2022 |
1.6.5 | 124 | 9/6/2022 |
1.6.4 | 654 | 5/24/2022 |
1.6.3 | 295 | 5/4/2022 |
1.6.2 | 137 | 5/4/2022 |
1.6.1 | 136 | 5/4/2022 |
1.6.0 | 141 | 5/4/2022 |
1.5.15 | 881 | 4/24/2022 |
1.5.14 | 189 | 4/18/2022 |
1.5.13 | 148 | 4/18/2022 |
1.5.12 | 145 | 4/17/2022 |
1.5.11 | 148 | 4/16/2022 |
1.5.10 | 287 | 3/25/2022 |
1.5.9 | 145 | 3/25/2022 |
1.5.8 | 471 | 1/15/2022 |
1.5.7 | 152 | 1/15/2022 |
1.5.6 | 153 | 1/15/2022 |
1.5.5 | 165 | 1/15/2022 |
1.5.4 | 151 | 1/14/2022 |
1.5.3 | 149 | 1/14/2022 |
1.5.2 | 147 | 1/14/2022 |
1.5.1 | 157 | 1/14/2022 |
1.5.0 | 151 | 1/14/2022 |
1.4.12 | 208 | 12/16/2021 |
1.4.11 | 164 | 12/16/2021 |
1.4.10 | 160 | 12/16/2021 |
1.4.9 | 188 | 12/16/2021 |
1.4.8 | 160 | 12/15/2021 |
1.4.7 | 175 | 12/15/2021 |
1.4.6 | 173 | 12/15/2021 |
1.4.5 | 172 | 12/15/2021 |
1.4.4 | 191 | 12/15/2021 |
1.4.3 | 177 | 12/15/2021 |
1.4.2 | 171 | 12/15/2021 |
1.4.1 | 185 | 12/15/2021 |
1.4.0 | 167 | 12/15/2021 |
1.3.1 | 161 | 12/15/2021 |
1.2.6 | 177 | 12/15/2021 |
1.2.5 | 168 | 12/15/2021 |
1.2.4 | 162 | 12/14/2021 |
1.2.3 | 163 | 12/14/2021 |
1.2.2 | 167 | 12/14/2021 |
1.2.1 | 180 | 12/6/2021 |
1.2.0 | 187 | 12/6/2021 |
1.1.19 | 161 | 11/23/2021 |
1.1.18 | 257 | 10/28/2021 |
1.1.17 | 202 | 10/27/2021 |
1.1.16 | 183 | 10/26/2021 |
1.1.15 | 181 | 10/13/2021 |
1.1.14 | 170 | 10/13/2021 |
1.1.13 | 185 | 10/6/2021 |
1.1.12 | 189 | 10/1/2021 |
1.1.11 | 228 | 9/22/2021 |
1.1.10 | 211 | 9/17/2021 |
1.1.9 | 351 | 9/15/2021 |
1.1.8 | 342 | 9/15/2021 |
1.1.7 | 342 | 9/15/2021 |
1.1.6 | 348 | 9/15/2021 |
1.1.5 | 333 | 9/15/2021 |
1.1.3 | 320 | 9/14/2021 |
1.1.2 | 322 | 9/14/2021 |
1.1.1 | 527 | 9/14/2021 |
1.1.0 | 325 | 9/14/2021 |
1.0.2 | 327 | 9/14/2021 |
1.0.1 | 372 | 9/14/2021 |