ScriptSourceGenerator 1.0.6

dotnet add package ScriptSourceGenerator --version 1.0.6
NuGet\Install-Package ScriptSourceGenerator -Version 1.0.6
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ScriptSourceGenerator" Version="1.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ScriptSourceGenerator --version 1.0.6
#r "nuget: ScriptSourceGenerator, 1.0.6"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ScriptSourceGenerator as a Cake Addin
#addin nuget:?package=ScriptSourceGenerator&version=1.0.6

// Install ScriptSourceGenerator as a Cake Tool
#tool nuget:?package=ScriptSourceGenerator&version=1.0.6

ScriptSourceGenerator

Nuget

This geneator can compile and run csx files and generate files from csx scripts using Roslyn scripting.

Usage

  • Add nuget package into your project Nuget
  • Add a .csx script file into project:
var httpClient = new HttpClient();
var result = await client.GetStringAsync("http://www.github.com");
  • Change .csx file Build Action property to C# analyzer additional file or modify csproj like this:
<ItemGroup>
	<None Remove="MyScript.csx" />
	<AdditionalFiles Include="MyScript.csx" />
</ItemGroup>
  • If you want to create files as an output, you can use global Output indexer property which is a StringBuilder:
Output["Github.html"].Append(result);
  • Even you can create .cs files to generate compile time source codes:
Output["MyModel.cs"].AppendLine("""
public class MyModel
{
""");
for(var i=0; i < 5; i++)
{
    Output["MyModel.cs"].AppendLine($$"""
        public string Prop{{i}} { get; set; } 
    """);
}

Output["MyModel.cs"].AppendLine("}");

and it will be generate this file:

public class MyModel
{
    public string Prop0 { get; set; }
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public string Prop3 { get; set; }
    public string Prop4 { get; set; }
}
  • To add assembly references and nuget references use #r directives:
#r "nuget:Microsoft.OpenApi.Readers/1.4.5"
#r "System.Net.Http"
using System;
using System.Net.Http;
using Microsoft.OpenApi;
using Microsoft.OpenApi.Extensions;
using Microsoft.OpenApi.Readers;

var httpClient = new HttpClient
{
    BaseAddress = new Uri("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/")
};

var stream = await httpClient.GetStreamAsync("master/examples/v3.0/petstore.yaml");

// Read V3 as YAML
var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic);

// Write V2 as JSON
var outputString = openApiDocument.Serialize(OpenApiSpecVersion.OpenApi2_0, OpenApiFormat.Json);
Output["GeneratedModels.cs"].Append(outputString);
  • External csx files can be imported with #load directive
#load "NetStandard20Fixes.csx"
#r "nuget: NSwag.Core.Yaml/13.18.0"
#r "nuget: NSwag.CodeGeneration.CSharp/13.18.0"            
#r "System.Net.Http"
using System.Net.Http;
using NJsonSchema.Generation;
using NJsonSchema.Yaml;
using NSwag;
using NSwag.CodeGeneration.CSharp;

string yaml;
using (var httpClient = new HttpClient())
    yaml = await httpClient.GetStringAsync("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml");

var openApiDocument = await OpenApiYamlDocument.FromYamlAsync(yaml);

var settings = new CSharpClientGeneratorSettings
{    

};

var generator = new CSharpClientGenerator(openApiDocument, settings);    

Output["g.cs"].Append(generator.GenerateFile());
There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

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.0.6 266 12/16/2022
1.0.5 249 12/16/2022
1.0.4 267 12/14/2022
1.0.3 250 12/13/2022
1.0.2 249 12/13/2022
1.0.1 248 12/12/2022
1.0.1-pre1 87 12/12/2022
1.0.0 252 12/12/2022