RSCG_AMS 2023.5.21.1551
dotnet add package RSCG_AMS --version 2023.5.21.1551
NuGet\Install-Package RSCG_AMS -Version 2023.5.21.1551
<PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" />
paket add RSCG_AMS --version 2023.5.21.1551
#r "nuget: RSCG_AMS, 2023.5.21.1551"
// Install RSCG_AMS as a Cake Addin #addin nuget:?package=RSCG_AMS&version=2023.5.21.1551 // Install RSCG_AMS as a Cake Tool #tool nuget:?package=RSCG_AMS&version=2023.5.21.1551
RSCG_AMS
a Roslyn Source Code Generator for About My Software
You will obtain
( See online at https://netcoreblockly.herokuapp.com/ams )
How to use
For Console or DLL
Add to the csproj 2023.5.21.1551
<ItemGroup>
<PackageReference Include="AMS_Base" Version="2023.5.21.1551" />
<PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
</ItemGroup>
And access like this:
var amsAll = AboutMySoftware.AllDefinitions;
foreach (var amsKV in amsAll)
{
var ams = amsKV.Value;
Console.WriteLine($"{amsKV.Key}.{nameof(ams.AssemblyName)} : {ams.AssemblyName}");
Console.WriteLine($"{amsKV.Key}.{nameof(ams.DateGenerated)} : {ams.DateGenerated}");
Console.WriteLine($"{amsKV.Key}.{nameof(ams.CommitId)} : {ams.CommitId}");
Console.WriteLine($"{amsKV.Key}.{nameof(ams.RepoUrl)} : {ams.RepoUrl}");
}
For Web applications
Add to the csproj
<PackageReference Include="AMSWebAPI" Version="2023.5.21.1551" />
<PackageReference Include="AMS_Base" Version="2023.5.21.1551" />
<PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
And in the Startup.cs put
//above the namespace : using AMSWebAPI;
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.UseAMS();
});
The access /ams/all ( for json) or /ams/index ( for html)
Adding releases on date
For adding releases between dates use the following codes:
using AMS_Base;
[assembly:VersionReleased(Name="PreviousReleases",ISODateTime ="2022-03-31",recordData = RecordData.Merges)]
[assembly: VersionReleased(Name = "WithVersioning", ISODateTime = "2022-04-02", recordData = RecordData.Merges)]
[assembly: AMS_Base.VersionReleased(Name = "FutureRelease", ISODateTime = "9999-04-16", recordData = AMS_Base.RecordData.Merges)]
Detecting that you are in a CI build
Put into the .csproj
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
In the obj folder see the GeneratedX folder, then AMS folder, than AMS.AMSVersion folder, then edit the .cs file with notepad
you will see something like
public class XAboutMySoftware_digits
Please see what are the digits
In your code put someething like this
bool IsInCI = new XAboutMySoftware_digits().IsInCI;
builder.Services.AddDbContextFactory<ApplicationDBContext>(
options =>
{
if (IsInCI)
{
var cn = builder.Configuration.GetConnectionString("DefaultConnection");
options.UseSqlServer(cn);
}
else
{
var cn = "Data Source=Tilt.db";
options.UseSqlite(cn);
}
}
)
;
Modifying the subject
Add to the csproj the following
<ItemGroup>
<CompilerVisibleProperty Include="AMSMerge" />
</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
<AMSMerge>AMSInterpreter.MergeAnalyzer</AMSMerge>
</PropertyGroup>
and add the following code to a class
public static string MergeAnalyzer(string RepoUrl,string CommitId, string Author, DateTime ReleaseDate, string Subject)
{
try
{
/*{
//modify the subject
string regex = @"^Merge\ pull\ request\ \#(?<issueID>\d+)\ from\ (?<branch>.+?)$";
RegexOptions options = RegexOptions.Multiline;
string input = Subject;
MatchCollection matches = Regex.Matches(input, regex, options);
foreach (Match match in matches)
{
return $"Issue ID: {RepoUrl}/issues/{match.Groups["issueID"].Value} branch: {match.Groups["branch"].Value}"; ;
}
return Subject;
}*/
}
catch (Exception ex)
{
return $"{CommitId} {ex.Message}";
}
}
Diagnostics
//TODO: Add more explanations here
<ItemGroup>
<ProjectReference Include="..\AMS\AMS.csproj" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
<ProjectReference Include="..\AMS_Base\AMS_Base.csproj" />
<CompilerVisibleProperty Include="AMSMerge" />
<CompilerVisibleProperty Include="FakeWarningForDiagnostics" />
</ItemGroup>
<PropertyGroup>
<FakeWarningForDiagnostics>true</FakeWarningForDiagnostics>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
<AMSMerge>AMSInterpreter.MergeAnalyzer</AMSMerge>
</PropertyGroup>
CI settings
For GitLab: <img width="901" alt="image" src="https://user-images.githubusercontent.com/153982/164086502-40222b40-676a-4e98-b7ad-ba96dba8e16e.png">
For GitHub actions:
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
How it is built
The AMS_Base project / nuget is containing the definition
The RSCG_AMS project / nuget generates the code for having , in CI , the C# class with the commit / Repo / date / other details.
The AMSWebAPI project / nuget generates the code for endpoints : /ams/index.html and /ams/all ( for json )
See more at http://msprogrammer.serviciipeweb.ro/category/ams/
TBD:
More about https://github.com/ignatandrei/RSCG_AMS/issues/27
<AMSGitArgs>log --merges --pretty='%an|%ai|%H|%s</AMSGitArgs>
More about Angular - to display ams - see src/Angular
More Roslyn Source Code Generators
You can find more RSCG with examples at Roslyn Source Code Generators
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
- AOPMethodsCommon (>= 2021.6.11.907)
- AOPMethodsGenerator (>= 2021.6.11.907)
- Microsoft.CodeAnalysis.CSharp (>= 4.5.0)
- Microsoft.CSharp (>= 4.7.0)
- System.Dynamic.Runtime (>= 4.3.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on RSCG_AMS:
Package | Downloads |
---|---|
NetCore7ShortLinks
Add short url capabilities to every .net core project |
|
NetCoreBlockly
This program will generate ASP.NET Core WebAPI+ ODATA+GraphQL blockly blocks. And from other swagger files. Can be usefull for just making a demo, interacting or others. Please see https://github.com/ignatandrei/NETCoreBlockly for details |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2023.5.21.1551 | 1,311 | 5/21/2023 |
2022.5.25.1154 | 10,032 | 5/25/2022 |
2022.5.9.926 | 2,080 | 5/9/2022 |
2022.4.21.349 | 1,072 | 4/21/2022 |
2022.4.7.1155 | 779 | 4/7/2022 |
2022.4.6.1707 | 421 | 4/6/2022 |
2022.4.2.2037 | 540 | 4/2/2022 |
2022.4.2.1928 | 426 | 4/2/2022 |
2021.7.6.628 | 7,746 | 7/6/2021 |
2021.7.5.1025 | 359 | 7/5/2021 |
2021.7.5.834 | 331 | 7/5/2021 |
2021.7.5.748 | 344 | 7/5/2021 |
2021.7.5.422 | 355 | 7/5/2021 |
2021.7.5.353 | 356 | 7/5/2021 |
2021.7.3.1623 | 356 | 7/3/2021 |
2021.6.29.1820 | 383 | 6/30/2021 |
2021.6.27.655 | 513 | 6/27/2021 |
2021.6.27.452 | 519 | 6/27/2021 |
2021.6.26.1937 | 452 | 6/26/2021 |
2021.6.26.1841 | 345 | 6/26/2021 |
2021.6.26.1813 | 354 | 6/26/2021 |
2021.6.26.1746 | 372 | 6/26/2021 |
2021.6.26.1515 | 401 | 6/26/2021 |
2021.6.26.1417 | 330 | 6/26/2021 |
2021.6.26.1301 | 464 | 6/26/2021 |
2021.6.26.1249 | 440 | 6/26/2021 |
2021.6.26.1228 | 487 | 6/26/2021 |
2021.6.26.1216 | 357 | 6/26/2021 |
2021.6.26.1159 | 354 | 6/26/2021 |
2021.6.26.809 | 658 | 6/26/2021 |
2021.6.26.723 | 651 | 6/26/2021 |
2021.6.26.632 | 577 | 6/26/2021 |