a0f2c1c09e
11556: Add Output.JsonSerialize to dotnet sdk r=Frassle a=Frassle <!--- Thanks so much for your contribution! If this is your first time contributing, please ensure that you have read the [CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md) documentation. --> # Description <!--- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. --> Plan is to add functions like this to _all_ the SDKs. JsonSerialization is _very_ language specific, dotnet for example uses System.Text.Json, go would use JsonMarshal, etc. So it's worth having it built into SDKs and then exposed as a PCL intrinsic (with the caveat that the cross-language result will be _valid_ JSON, but with no commmitment to formatting for example). This is just the first part of this work, to add it to the dotnet SDK (simply because I know that best). ## Checklist <!--- Please provide details if the checkbox below is to be left unchecked. --> - [x] I have added tests that prove my fix is effective or that my feature works <!--- User-facing changes require a CHANGELOG entry. --> - [x] I have run `make changelog` and committed the `changelog/pending/<file>` documenting my change <!-- If the change(s) in this PR is a modification of an existing call to the Pulumi Service, then the service should honor older versions of the CLI where this change would not exist. You must then bump the API version in /pkg/backend/httpstate/client/api.go, as well as add it to the service. --> - [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version <!-- `@Pulumi` employees: If yes, you must submit corresponding changes in the service repo. --> Co-authored-by: Fraser Waters <fraser@pulumi.com> |
||
---|---|---|
.. | ||
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.Shipped.txt
corresponding to your project (some IDEs
will do this automatically for you, but manual additions are fine as
well).