Skip to content

Update dependency Nice3point.Revit.Sdk to 6.3.1 - #52

Merged
Nice3point merged 1 commit into
developfrom
renovate/nice3point.revit.sdk-6.x
Oct 8, 2026
Merged

Nice3point merged 1 commit into
developfrom
renovate/nice3point.revit.sdk-6.x

Conversation

@Nice3point

@Nice3point Nice3point commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

This PR contains the following updates:

Package Type Update Change
Nice3point.Revit.Sdk msbuild-sdk minor 6.2.3 → 6.3.1

Warning

Some dependencies could not be looked up. Check the warning logs for more information.


Release Notes

Nice3point/RevitTemplates (Nice3point.Revit.Sdk)

v6.3.1

Compare Source

The SDK is cross-platform now.

Templates

  • Generated code follows the .editorconfig rules of the solution: if statements have braces, and using directives are sorted the way the IDE sorts them.
  • The code style no longer wraps a long assignment after =: resharper_prefer_wrap_around_eq is set to avoid.

SDK

  • Add-ins build on Linux and macOS. The SDK enables EnableWindowsTargeting outside Windows, and a project no longer needs to set it.
  • Repacking runs on Linux and macOS through the dotnet host.
  • Outside Windows, DeployAddin skips the deployment with a message unless AddinDeployDir is set. The build no longer fails on the missing %AppData% folder.
  • The publish message shows the correct path when AddinPublishDir is an absolute path.

v6.3.0

Compare Source

Logging moves to Microsoft.Extensions.Logging, the code shared by an application and its modules moves to the new service defaults template, and the installer builds from a manifest.
In existing projects, update the SDK version and follow the migration guide.

Templates

Microsoft.Extensions.Logging

Add-ins log through Microsoft.Extensions.Logging with source-generated LoggerMessage methods. The Serilog packages are no longer referenced.
The logging option is available when dependency injection is enabled, and one call registers the providers:

builder.AddLoggingDefaults();
public sealed partial class ProjectService(ILogger<ProjectService> logger)
{
    public void Save(Document document)
    {
        document.Save();
        LogProjectSaved(logger, document.Title);
    }

    [LoggerMessage(LogLevel.Information, "The project {Title} is saved.")]
    private static partial void LogProjectSaved(ILogger<ProjectService> logger, string title);
}
  • Records with the Error level and above are written to the Revit journal through the Nice3point.Revit.Logging provider. With hosting, the Logging:RevitJournal:LogLevel configuration section changes the level.
  • Unhandled AppDomain exceptions are written to the log with the Critical level.
  • The Configuration folder is replaced by Logging and Diagnostics.
Service defaults template

The new revit-servicedefaults template creates a project for the service configuration that an application and its modules share, on the model of the .NET Aspire service defaults.
The template provides logging and diagnostics, and the project is the place for every other shared registration: serialization, HTTP clients, options.
revit-addin-application now creates the entry point alone, and the application host applies the shared defaults with one call:

dotnet new revit-addin-application -n RevitAddIn --di hosting
dotnet new revit-servicedefaults -n RevitAddIn.ServiceDefaults
builder.AddServiceDefaults();
Installer

The installer project moved from the install folder to installer and builds the MSI packages from a manifest that the build writes.

  • The .addin manifests are installed after the assemblies they reference. An interrupted installation no longer registers an add-in whose assemblies are missing.

  • The upgrade code is configured in the Installer section of build/appsettings.json:

    "Installer": {
      "UpgradeCode": "CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC"
    }
  • The product name of the packages comes from the add-in project.

  • The packages no longer contain .pdb files.

Tests and benchmarks
  • The test project is adapted to the latest Nice3point.TUnit.Revit, which runs test hooks on the Revit thread. [HookExecutor<RevitThreadExecutor>] and TestsConfiguration.cs are removed.
  • The test template contains a TUnit assertion.
  • The benchmark project runs through BenchmarkSwitcher. Command-line arguments select the benchmarks to run: dotnet run -c Release.R26 -- --filter '*'.
  • The benchmark class is marked [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)], and the IDE no longer reports the benchmarks as unused.
Generated code
  • Entry points, views, view models, host services, and build options have XML documentation.
  • The solution contains the code style in .editorconfig and the LF line-ending policy in .gitattributes.
  • Generated files use LF line endings, end with a newline, and follow the code style of the solution.
  • The solution pins the .NET SDK to the 10.0.1xx feature band.
  • The Models folder is no longer created.
  • The host of an add-in sets IHostEnvironment.ApplicationName to the project name.
  • ILRepack, Polyfill, and JetBrains.Annotations are private assets of the generated projects.
Build
  • Every options type declares its configuration section in ConfigurationSectionName, and Program.cs binds the options through it.

  • Build modules log through source-generated LoggerMessage methods.

  • Build and installer errors state the problem, the cause, and the action that resolves it:

    Cannot create the bundle. No publish output was found in 'source/RevitAddIn/bin'. Set 'PublishAddin' to 'true' in the add-in project.
    
  • A solution without a bundle and an installer compiles BuildOptions.

  • A version with a hyphen in the prerelease label keeps the whole label in VersionSuffix.

  • The release of 1.0.0 no longer takes the release notes from the 1.0.0-rc.1 entry of the changelog.

  • Release assets are uploaded as application/octet-stream, and the asset files are closed after the upload.

  • The installer step removes the temporary WiX toolset after the build.

  • The test step no longer disables ILRepack.

Samples
  • The sample solution keeps logging, diagnostics, and serialization in a ServiceDefaults project, and serializes through a source-generated context.
  • The Extensible Storage sample stores its data through a schema definition and a typed context.
Dependencies
  • Updated dependencies.

SDK

  • ILRepack merges the published add-in. The bin directory keeps the original assemblies for the projects that reference the add-in, such as a test project.
  • Repacking runs only when PublishAddin or DeployAddin is enabled.
  • Updated dependencies.

Breaking changes

  • Serilog is replaced by Microsoft.Extensions.Logging.
  • revit-addin-application no longer has the logging option. Logging comes from a revit-servicedefaults project.
  • The installer project moved from install to installer, and the upgrade code moved to build/appsettings.json.
  • Test hooks no longer use RevitThreadExecutor.
  • Repacking requires PublishAddin or DeployAddin.

Migration guide

Add-in
  1. Delete the Configuration folder from the add-in project.

  2. Create a temporary project with version 6.3.0 and the same options, and copy the Logging and Diagnostics folders to the add-in project.

  3. Replace the Serilog registration in Host.cs:

    // Before, hosting
    builder.Logging.ClearProviders();
    builder.Logging.AddSerilog();
    builder.ConfigureHosting();
    
    // After, hosting
    builder.AddLoggingDefaults();
    
    // Before, container
    services.AddSerilog();
    _serviceProvider = services.BuildServiceProvider();
    
    // After, container
    services.AddLoggingDefaults();
    _serviceProvider = services.BuildServiceProvider();
    _serviceProvider.GetRequiredService<AppDomainExceptionsHandler>().LogExceptions();
  4. Remove the Serilog, Serilog.Sinks.Debug, and Serilog.Extensions.Hosting package references.

  5. With hosting, Serilog was a provider of Microsoft.Extensions.Logging, and the classes already receive ILogger<T>. With the container option, replace the injected Serilog.ILogger with ILogger<T>:

    // Before
    public class ProjectService(Serilog.ILogger logger)
    {
        public void Save() => logger.Information("Message");
    }
    
    // After
    public partial class ProjectService(ILogger<ProjectService> logger)
    {
        public void Save() => LogMessage(logger);
    
        [LoggerMessage(LogLevel.Information, "Message")]
        private static partial void LogMessage(ILogger<ProjectService> logger);
    }
Solution
  1. Delete the install folder and build/Modules/CreateInstallerModule.cs.

  2. Create a temporary solution with version 6.3.0, and copy the installer folder, build/Modules/CreateInstallerModule.cs, and build/Options/InstallerOptions.cs to the solution.

  3. Replace the install project with installer/Installer.csproj in the solution file.

  4. Register the options in build/Program.cs:

    builder.Services.AddOptions<InstallerOptions>().Bind(builder.Configuration.GetSection(InstallerOptions.ConfigurationSectionName)).ValidateDataAnnotations();
  5. Add the Installer section to build/appsettings.json, and set UpgradeCode to the GUID that install/Installer.cs passed to Project.GUID. A new GUID makes the next release install side by side with the previous one.

Tests
  1. Update Nice3point.TUnit.Revit to the latest version.

  2. Delete TestsConfiguration.cs and remove the executor from the test hooks:

    // Before
    [Before(Test)]
    [HookExecutor<RevitThreadExecutor>]
    public void SeedModel()
    
    // After
    [Before(Test)]
    public void SeedModel()
SDK

A project that repacks its assemblies enables PublishAddin or DeployAddin:

<PropertyGroup>
    <PublishAddin>true</PublishAddin>
</PropertyGroup>

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Copilot AI balanced review requested due to automatic review settings October 8, 2026 04:56
@Nice3point Nice3point added the maintenance ⚙️ Renovate dependency updates and routine upkeep label Oct 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Nice3point Nice3point changed the title Update dependency Nice3point.Revit.Sdk to 6.3.0 Update dependency Nice3point.Revit.Sdk to 6.3.1 Oct 8, 2026
@Nice3point
Nice3point force-pushed the renovate/nice3point.revit.sdk-6.x branch from 3731f90 to 5db7836 Compare October 8, 2026 18:34
@Nice3point
Nice3point merged commit fe5a7de into develop Oct 8, 2026
1 check passed
@Nice3point
Nice3point deleted the renovate/nice3point.revit.sdk-6.x branch October 8, 2026 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance ⚙️ Renovate dependency updates and routine upkeep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants