OpenDsc.Resource
0.5.1
Prefix Reserved
dotnet add package OpenDsc.Resource --version 0.5.1
NuGet\Install-Package OpenDsc.Resource -Version 0.5.1
<PackageReference Include="OpenDsc.Resource" Version="0.5.1" />
<PackageVersion Include="OpenDsc.Resource" Version="0.5.1" />
<PackageReference Include="OpenDsc.Resource" />
paket add OpenDsc.Resource --version 0.5.1
#r "nuget: OpenDsc.Resource, 0.5.1"
#:package OpenDsc.Resource@0.5.1
#addin nuget:?package=OpenDsc.Resource&version=0.5.1
#tool nuget:?package=OpenDsc.Resource&version=0.5.1
OpenDsc.Resource
The OpenDsc.Resource package contains core types for Microsoft DSC
v3 resources.
Installation
Install the package via NuGet:
dotnet add package OpenDsc.Resource
Usage
This package provides the base classes and interfaces needed to implement Microsoft DSC v3 resources in C#.
Base Class
Inherit from DscResource<T> to get basic JSON serialization and schema
generation:
using OpenDsc.Resource;
using System.Text.Json.Serialization;
[DscResource("MyCompany/MyResource", "1.0.0")]
public class MyResource(JsonSerializerContext context) : DscResource<MySchema>(context)
{
// Constructor automatically passes context to base class
}
For non-AOT scenarios, you can use JsonSerializerOptions:
public class MyResource(JsonSerializerOptions options) : DscResource<MySchema>(options)
{
// Use DscJsonSerializerSettings.Default for standard settings
}
Interfaces
Implement the following interfaces to add DSC operations:
IGettable<T>: Retrieve current configurationISettable<T>: Set desired configurationITestable<T>: Test if configuration matches desired stateIDeletable<T>: Delete configurationIExportable<T>: Export all instances
Attributes
Use the DscResourceAttribute to define resource metadata:
[DscResource("MyCompany/MyResource", "1.0.0",
Description = "Manages my resource",
Tags = ["tag1", "tag2"],
SetReturn = SetReturn.StateAndDiff,
TestReturn = TestReturn.StateAndDiff)]
public class MyResource(JsonSerializerContext context) : DscResource<MySchema>(context),
IGettable<MySchema>, ISettable<MySchema>, ITestable<MySchema>
{
public MySchema Get(MySchema instance) { /* implementation */ }
public SetResult<MySchema>? Set(MySchema instance) { /* implementation */ }
public TestResult<MySchema> Test(MySchema instance) { /* implementation */ }
}
The attribute supports:
- Type (required): Resource identifier in
Owner/Nameformat - Version (required): Semantic version string
- Description: Human-readable description
- Tags: Array of tags for categorization
- SetReturn: Controls
Setoperation output (None, State, StateAndDiff) - TestReturn: Controls
Testoperation output (State, StateAndDiff)
Requirements
- .NET Standard 2.0 or higher
- Depends on
NuGet.VersioningandSystem.Text.Json
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- NuGet.Versioning (>= 6.14.0)
- System.Text.Json (>= 10.0.0)
-
net10.0
- NuGet.Versioning (>= 6.14.0)
-
net8.0
- NuGet.Versioning (>= 6.14.0)
- System.Text.Json (>= 10.0.0)
-
net9.0
- NuGet.Versioning (>= 6.14.0)
- System.Text.Json (>= 10.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OpenDsc.Resource:
| Package | Downloads |
|---|---|
|
OpenDsc.Resource.CommandLine
Microsoft DSC v3 resource command line and manifest generator. |
GitHub repositories
This package is not used by any popular GitHub repositories.