rscgutils 2023.914.2016
See the version list below for details.
dotnet add package rscgutils --version 2023.914.2016
NuGet\Install-Package rscgutils -Version 2023.914.2016
<PackageReference Include="rscgutils" Version="2023.914.2016" />
paket add rscgutils --version 2023.914.2016
#r "nuget: rscgutils, 2023.914.2016"
// Install rscgutils as a Cake Addin #addin nuget:?package=rscgutils&version=2023.914.2016 // Install rscgutils as a Cake Tool #tool nuget:?package=rscgutils&version=2023.914.2016
RSCG_Utils
Roslyn Source Code Generators Utils
Usage
Additional Files
Allow you to see additional files directly as C# const. For this, please add some .gen. files to the project.
In your csproj
<ItemGroup>
<PackageReference Include="rscgutils" Version="2023.502.835" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="Second.gen.txt" />
<AdditionalFiles Include="first.gen.txt" />
<AdditionalFiles Include="test\Afirst.gen.txt" />
<AdditionalFiles Include="sql/**/*" />
</ItemGroup>
In the code
//see https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/raw-string
string x= MyAdditionalFiles.Second_gen_txt;
To debug, you can add into the .csproj
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GeneratedX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
More details at http://msprogrammer.serviciipeweb.ro/2023/05/08/file-to-csharp-const/
Json2Class
If you have an additional json file, you can have a file from this
<ItemGroup>
<AdditionalFiles Include="my.gen.json" />
</ItemGroup>
And you can have from the code
var json = System.Text.Json.JsonSerializer
.Deserialize<GeneratedJson.my_gen_json>(MyAdditionalFiles.my_gen_json);
ArgumentNullException.ThrowIfNull( json );
Console.WriteLine( ":hosts"+json.AllowedHosts );
Memoization of function returns
Put _MemoPure and the return of the function will be memo-ized
public long Test_MemoPure()
{
Console.WriteLine("calculating type");
return this.GetType().ToString().GetHashCode();
}
public async Task<long> fib(long nr)
{
await Task.Delay(1000);
//Console.WriteLine("calculated value for " + nr);
if (nr <= 1) return 1;
if (nr == 2) return 2;
return await fib(nr - 1) + await fib(nr - 1);
}
public async Task<long> fibonacci_MemoPure(long nr)
{
if (nr <= 1) return 1;
if (nr == 2) return 2;
await Task.Delay(1000);
return await fibonacci(nr - 1) + await fibonacci(nr - 1);
}
And call
fibTest f = new();
Console.WriteLine("first time :" + f.Test());
Console.WriteLine("second time :" + f.Test());
Console.WriteLine(DateTime.Now.ToString("mm_ss"));
Console.WriteLine("no memo :"+await f.fib(5));
Console.WriteLine(DateTime.Now.ToString("mm_ss"));
Console.WriteLine("memo :" + await f.fibonacci(5));
Console.WriteLine(DateTime.Now.ToString("mm_ss"));
Console.WriteLine("FAST memo :" + await f.fibonacci(5));
Console.WriteLine(DateTime.Now.ToString("mm_ss"));
More Roslyn Source Code Generators
You can find more RSCG with examples at Roslyn Source Code Generators
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- System.Text.Json (>= 7.0.3)
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 |
---|---|---|
2024.2000.2000 | 222 | 3/15/2024 |
2024.1859.1955 | 212 | 3/12/2024 |
2024.1858.1957 | 194 | 3/15/2024 |
2024.1858.1931 | 187 | 3/12/2024 |
2024.1857.1858 | 178 | 3/12/2024 |
2023.914.2016 | 277 | 9/14/2023 |
2023.827.1021 | 394 | 8/27/2023 |
2023.827.904 | 309 | 8/27/2023 |
2023.827.621 | 250 | 8/27/2023 |
2023.826.1704 | 276 | 8/27/2023 |
2023.514.835 | 214 | 5/14/2023 |
2023.502.835 | 209 | 5/2/2023 |
2023.501.2230 | 164 | 5/1/2023 |
2023.501.951 | 179 | 5/1/2023 |
2023.8.26.1704 | 266 | 8/26/2023 |