ModularPipelines.Email
2.13.47
Prefix Reserved
See the version list below for details.
dotnet add package ModularPipelines.Email --version 2.13.47
NuGet\Install-Package ModularPipelines.Email -Version 2.13.47
<PackageReference Include="ModularPipelines.Email" Version="2.13.47" />
<PackageVersion Include="ModularPipelines.Email" Version="2.13.47" />
<PackageReference Include="ModularPipelines.Email" />
paket add ModularPipelines.Email --version 2.13.47
#r "nuget: ModularPipelines.Email, 2.13.47"
#:package ModularPipelines.Email@2.13.47
#addin nuget:?package=ModularPipelines.Email&version=2.13.47
#tool nuget:?package=ModularPipelines.Email&version=2.13.47
ModularPipelines
Define your pipeline in .NET! Strong types, intellisense, parallelisation, and the entire .NET ecosystem at your fingertips.
Features
- Parallel execution
- Dependency management
- Familiar C# code
- Ability to debug pipelines
- Ability to run pipelines locally, even creating versions for setting up local development
- Strong typing, where different modules/steps can pass data to one another
- Dependency collision detection - Don't worry about accidentally making two modules dependent on each other
- Numerous helpers to do things like: Search files, check checksums, (un)zip folders, download files, install files, execute CLI commands, hash data, and more
- Easy to Skip or Ignore Failures for each individual module by passing in custom logic
- Hooks that can run before and/or after modules
- Pipeline requirements - Validate your requirements are met before executing your pipeline, such as a Linux operating system
- Easy to use File and Folder classes, that can search, read, update, delete and more
- Source controlled pipelines
- Build agent agnostic - Can easily move to a different build system without completely recreating your pipeline
- No need to learn new syntaxes such as YAML defined pipelines
- Strongly typed wrappers around command line tools
- Utilise existing .NET libraries
- Secret obfuscation
- Grouped logging, and the ability to extend sources by adding to the familiar
ILogger - Run based on categories
- Easy to read exceptions
- Dynamic console progress reporting (if the console supports interactive mode)
- Pretty results table
Available Modules
Getting Started
If you want to see how to get started, or want to know more about ModularPipelines, read the Documentation here
Console Progress
Results
<img width="444" alt="image" src="https://github.com/thomhurst/ModularPipelines/assets/30480171/8963e891-2c29-4382-9a3e-6ced4daf4d4b">
Code Examples
Program.cs - Main method
await PipelineHostBuilder.Create()
.ConfigureAppConfiguration((context, builder) =>
{
builder.AddJsonFile("appsettings.json")
.AddUserSecrets<Program>()
.AddEnvironmentVariables();
})
.ConfigureServices((context, collection) =>
{
collection.Configure<NuGetSettings>(context.Configuration.GetSection("NuGet"));
collection.Configure<PublishSettings>(context.Configuration.GetSection("Publish"));
collection.AddSingleton<ISomeService1, SomeService1>();
collection.AddTransient<ISomeService2, SomeService2>();
})
.AddModule<FindNugetPackagesModule>()
.AddModule<UploadNugetPackagesModule>()
.ExecutePipelineAsync();
Custom Modules
public class FindNugetPackagesModule : Module<FileInfo>
{
protected override Task<List<File>?> ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken)
{
return context.Git()
.RootDirectory
.GetFiles(path => path.Extension is ".nupkg")
.ToList()
.AsTask();
}
}
[DependsOn<FindNugetPackagesModule>]
public class UploadNugetPackagesModule : Module<FileInfo>
{
private readonly IOptions<NuGetSettings> _nugetSettings;
public UploadNugetPackagesModule(IOptions<NuGetSettings> nugetSettings)
{
_nugetSettings = nugetSettings;
}
protected override async Task<CommandResult?> ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken)
{
var nugetFiles = await GetModule<FindNugetPackagesModule>();
return await context.NuGet()
.UploadPackages(new NuGetUploadOptions(nugetFiles.Value!.AsPaths(), new Uri("https://api.nuget.org/v3/index.json"))
{
ApiKey = _nugetSettings.Value.ApiKey
});
}
}
Breaking changes
While I will try to limit breaking changes, there may be some changes within minor versions. These will be noted on release notes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. 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 is compatible. 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 was computed. 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 was computed. 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 was computed. 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. |
-
net6.0
- MailKit (>= 4.2.0)
- ModularPipelines (>= 2.13.47)
-
net7.0
- MailKit (>= 4.2.0)
- ModularPipelines (>= 2.13.47)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.1.90 | 101 | 2/7/2026 |
| 3.1.6 | 109 | 1/19/2026 |
| 3.1.5 | 101 | 1/19/2026 |
| 3.1.0 | 103 | 1/18/2026 |
| 3.0.124 | 103 | 1/18/2026 |
| 3.0.86 | 104 | 1/18/2026 |
| 3.0.1 | 107 | 1/17/2026 |
| 3.0.0 | 97 | 1/16/2026 |
| 2.48.531-alpha0001 | 88 | 1/16/2026 |
| 2.48.528-alpha0001 | 95 | 1/16/2026 |
| 2.48.517-alpha0003 | 90 | 1/16/2026 |
| 2.48.499-alpha0001 | 88 | 1/16/2026 |
| 2.48.496-alpha0001 | 92 | 1/16/2026 |
| 2.48.30 | 145 | 11/2/2025 |
| 2.48.29 | 145 | 11/2/2025 |
| 2.48.8 | 210 | 10/30/2025 |
| 2.47.8 | 206 | 8/10/2025 |
| 2.47.0 | 173 | 8/9/2025 |
| 2.46.1 | 188 | 8/8/2025 |
| 2.13.47 | 213 | 10/20/2023 |