pulumi/sdk/dotnet
Fraser Waters 385b5c5212 Remove use of /opt/pulumi for nuget packages
Stop using /opt/pulumi/nuget, this makes some progress towards fixing

There are three main changes here:
1) We no longer pack on build, instead requiring an explicit pack command
(which runs in relase configuration). This should be a small speed improvement
for standard builds.
2) The integration tests no longer rely on a nuget package, instead we just
reference the project directly. This removes the need for a local nuget feed
that had to be setup and installed into.
3) As we've got rid of the local nuget feed `make install` simply runs "dotnet
pack" and `make publish` picks up the .nupkg from the sdk bin folder.

The one workflow this changes is if people have pulumi programs outside
pulumi/pulumi that they we're using `make install` to get a build of the
dotnet sdk into. Anyone using that workflow instead needs to either:
1) Manually copy the .nupkg from the build folder to wherever they have
setup their local nuget feed.
2) Change that project to refer to Pulumi via a project reference.
2021-11-12 12:18:42 +00:00
..
cmd/pulumi-language-dotnet [sdk/dotnet] Warn when a secret config is read as a non-secret (#7079) 2021-05-18 15:01:57 -07:00
Pulumi Remove use of /opt/pulumi for nuget packages 2021-11-12 12:18:42 +00:00
Pulumi.Automation Remove use of /opt/pulumi for nuget packages 2021-11-12 12:18:42 +00:00
Pulumi.Automation.Tests .NET & python SDKs parity for bad pulumi versions (#8297) 2021-10-27 20:54:23 -07:00
Pulumi.FSharp Remove use of /opt/pulumi for nuget packages 2021-11-12 12:18:42 +00:00
Pulumi.Tests Fix 8322 (#8339) 2021-11-08 10:45:26 -05: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
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
Makefile Remove use of /opt/pulumi for nuget packages 2021-11-12 12:18:42 +00:00
pulumi_logo_64x64.png Fixing up Pulumi logo in dotnet package 2021-04-21 18:45:21 +01:00
README.md Avoid overriding dotnet proj settings accidentally (#6670) 2021-04-01 15:27:24 -04:00

.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.