pulumi/sdk/dotnet
Zaid Ajaj 846b7b88cb
dotnet program-gen now targets .NET 6 (#10143)
* dotnet program-gen targets .NET 6

* changelog entry

* Update GH workflows to use .NET 6

* Enable DOTNET_ROLL_FORWARD=Major for GH workflows

* Expose GeneratePrograms with ability to provide generation options. Use specialized options for import

* Bump dotnet test projects TFM and relax warnings as errors

* refactor code according to Ian's comments

* Include error in generator diagnostics when unable to find function schema

* remove specialized version of GenerateProgram for import and refactor lowerExpression

* remove AcceptCodegenChanges from program driver

* dotnet integration tests updated to net6.0

* Generate return await on top-level Deployment.RunAsync
2022-07-21 21:04:02 +02:00
..
Pulumi Compile protobufs with "pulumi" namespace (#10074) 2022-07-12 14:45:03 +01:00
Pulumi.Automation [auto] Add flag to show secrets (#9879) 2022-06-24 10:00:09 -07:00
Pulumi.Automation.Tests dotnet program-gen now targets .NET 6 (#10143) 2022-07-21 21:04:02 +02:00
Pulumi.FSharp Enable deterministic builds 2021-04-29 14:24:43 +12:00
Pulumi.Tests dotnet program-gen now targets .NET 6 (#10143) 2022-07-21 21:04:02 +02:00
cmd/pulumi-language-dotnet Update protoc-gen-go to 1.5.2 (#9840) 2022-06-11 08:52:24 +01:00
.editorconfig Add **preview** .NET Core support for pulumi. (#3399) 2019-10-25 16:59:50 -07:00
.gitignore [Automation API] - C# Implementation (#5761) 2021-02-18 11:36:21 +01:00
Makefile Remove PROJECT_ROOT Make var (#9953) 2022-06-24 10:04:40 -04:00
README.md Avoid overriding dotnet proj settings accidentally (#6670) 2021-04-01 15:27:24 -04:00
dotnet.sln [Automation API] - C# Implementation (#5761) 2021-02-18 11:36:21 +01:00
dotnet.sln.DotSettings [dotnet] Fix Resharper code issues (#7178) 2021-06-10 10:32:33 -04:00
pulumi_logo_64x64.png Fixing up Pulumi logo in dotnet package 2021-04-21 18:45:21 +01:00

README.md

.NET Language Provider

A .NET language provider for Pulumi.

Building and Running

To build, you'll want to install the .NET Core 3.0 SDK or greater, and ensure dotnet is on your path. Once that it does, running make in either the root directory or the sdk/dotnet directory will build and install the language plugin.

Once this is done you can write a Pulumi app written on top of .NET. You can find many examples showing how this can be done with C#, F#, or VB. Your application will need to reference the Pulumi NuGet package or the Pulumi.dll built above.

Here's a simple example of a Pulumi app written in C# that creates some simple AWS resources:

// Copyright 2016-2019, Pulumi Corporation

using System.Collections.Generic;
using System.Threading.Tasks;
using Pulumi;
using Pulumi.Aws.S3;

class Program
{
    static Task<int> Main()
        => Deployment.RunAsync(() =>
        {
            var config = new Config("hello-dotnet");
            var name = config.Require("name");

            // Create the bucket, and make it public.
            var bucket = new Bucket(name, new BucketArgs { Acl = "public-read" });

            // Add some content.
            var content = new BucketObject($"{name}-content", new BucketObjectArgs
            {
                Acl = "public-read",
                Bucket = bucket.Id,
                ContentType = "text/plain; charset=utf8",
                Key = "hello.txt",
                Source = new StringAsset("Made with ❤, Pulumi, and .NET"),
            });

            // Return some values that will become the Outputs of the stack.
            return new Dictionary<string, object>
            {
                { "hello", "world" },
                { "bucket-id", bucket.Id },
                { "content-id", content.Id },
                { "object-url", Output.Format($"http://{bucket.BucketDomainName}/{content.Key}") },
            };
        });
}

Make a Pulumi.yaml file:

$ cat Pulumi.yaml

name: hello-dotnet
runtime: dotnet

Then, configure it:

$ pulumi stack init hello-dotnet
$ pulumi config set name hello-dotnet
$ pulumi config set aws:region us-west-2

And finally, preview and update as you would any other Pulumi project.

Public API Changes

When making changes to the code you may get the following compilation error:

error RS0016: Symbol XYZ' is not part of the declared API.

This indicates a change in public API. If you are developing a change and this is intentional, add the new API elements to PublicAPI.Unshipped.txt corresponding to your project (some IDEs will do this automatically for you, but manual additions are fine as well).

Project maintainers will move API elements from PublicAPI.Unshipped.txt to PublicAPI.Shipped.txt when cutting a release.