385b5c5212
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. |
||
---|---|---|
.. | ||
Pulumi | ||
Pulumi.Automation | ||
Pulumi.Automation.Tests | ||
Pulumi.FSharp | ||
Pulumi.Tests | ||
cmd/pulumi-language-dotnet | ||
.editorconfig | ||
.gitignore | ||
Makefile | ||
README.md | ||
dotnet.sln | ||
dotnet.sln.DotSettings | ||
pulumi_logo_64x64.png |
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.