Skip to content

REVIT-249324/249325/249329: Migrate DynamoRevit to .NET 10 (Revit 2025)#3307

Merged
Mikhinja merged 5 commits intoRevit2025from
fusneif/REVIT-249324/REVIT-249325/REVIT-249329/d4r-2025-net10
Apr 15, 2026
Merged

REVIT-249324/249325/249329: Migrate DynamoRevit to .NET 10 (Revit 2025)#3307
Mikhinja merged 5 commits intoRevit2025from
fusneif/REVIT-249324/REVIT-249325/REVIT-249329/d4r-2025-net10

Conversation

@Fusneica-FlorentinCristian
Copy link
Copy Markdown
Collaborator

Summary

Migrates DynamoRevit to .NET 10 targeting Revit 2025.5.

Commits

REVIT-249329: Extract icons from .resx for .NET 10 compatibility

  • Extracted all embedded System.Drawing.Bitmap icons from .resx files into separate .png files
  • Updated .resx files to use ResXFileRef pointing to the extracted PNGs
  • Updated DynamoRevitIcons.csproj: removed System.Resources.Extensions NuGet package, removed GetReferenceAssemblyPaths for .NETFramework, Version=v4.8, removed References="...System.Drawing.dll" from GenerateResource tasks

REVIT-249324: Update versioning, config, solution & projects for .NET 10

  • Added global.json with SDK 10.0.0 (rollForward: minor)
  • Bumped .version to 0.5.47, updated CHANGELOG.md
  • Added src/Config/packages_versions.props with pinned package versions and DCoreLibSubFolder/GregRevitAuthLibSubFolder properties
  • Updated CS_SDK.props: added NET100 to Platforms, added net10.0-windows TargetFramework condition, imported packages_versions.props
  • Updated packages.aget: removed System.Resources.Extensions
  • Updated user_local.props: added net10.0 REVITAPI fallback path
  • Added NET100 solution configurations to DynamoRevit.All.sln for all projects
  • Updated DynamoRevit.csproj: added EnableDynamicLoading, updated Greg/GregRevitAuth hint paths to use $(GregRevitAuthLibSubFolder), added Copy dll target using package path properties

REVIT-249325: Update CI/pipelines for NET10

  • Updated src/restorepackages.bat: changed -framework NET80-framework NET100

Notes

  • ⚠️ DynamoVisualProgramming.* NuGet packages are not updated — they are not yet released for .NET 10. DCoreLibSubFolder remains net8.0 for NET100 builds until packages are published.

- CS_SDK.props: add NET100 TargetFramework (net10.0-windows),
  DCoreLibSubFolder (net10.0), REVITAPI net8.0 fallback (RevitAPI 25.x
  ships net8.0 only), updated output path format to bin\Platform\Config\Revit,
  added NoWarn for CLS compliance, fixed last REVITAPI fallback to Revit 2025.
  Keeps NET70/NET80 platforms intact (additive change).
- packages.aget: bump DynamoVisualProgramming packages to 3.3.2.11866
  (net10.0-compatible build). Remove System.Resources.Extensions (not
  needed with net10 bcl).
- DynamoRevit.All.sln: add Debug|NET100 and Release|NET100 platform
  configurations for all projects (additive alongside NET80).
- restorepackages.bat: update aget -framework from NET80 to NET100.
@Fusneica-FlorentinCristian Fusneica-FlorentinCristian force-pushed the fusneif/REVIT-249324/REVIT-249325/REVIT-249329/d4r-2025-net10 branch from 28e81f1 to 7765583 Compare April 7, 2026 21:04
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Migrates the DynamoRevit solution/build configuration toward .NET 10 for Revit 2025.5, including resource/icon handling changes and updated build tooling/configuration.

Changes:

  • Updated solution/configuration to use a NET100 platform and added global.json SDK pinning.
  • Adjusted icon/resource generation for .NET 10 compatibility by removing System.Resources.Extensions usage and System.Drawing reference wiring in resource generation.
  • Updated NuGet package reference versions and build version stamping.

Reviewed changes

Copilot reviewed 6 out of 895 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/DynamoRevitIcons/DynamoRevitIcons.csproj Removes System.Resources.Extensions reference and updates resource generation/AL metadata for 2025.
src/DynamoRevit.All.sln Switches solution configurations from NET80 to NET100 and adds global.json as a solution item.
src/Config/packages.aget Updates DynamoVisualProgramming package versions and removes System.Resources.Extensions.
src/Config/CS_SDK.props Collapses platform to NET100, sets net10 TFM, adjusts output paths and warning suppressions.
src/AssemblySharedInfoGenerator/AssemblySharedInfo.tt Increments the build number used for generated assembly versions.
global.json Pins the .NET SDK version and roll-forward behavior.
Comments suppressed due to low confidence (1)

src/DynamoRevitIcons/DynamoRevitIcons.csproj:28

  • The PR description states that GetReferenceAssemblyPaths for ".NETFramework, Version=v4.8" was removed from this project, but it’s still present here. If the intent is to eliminate .NET Framework-specific build steps for .NET 10 compatibility, this target should be updated accordingly (or the PR description should be corrected to reflect what remains).
	<Target Name="BeforeBuildMigrated" BeforeTargets="PreBuildEvent">
		<GetReferenceAssemblyPaths TargetFrameworkMoniker=".NETFramework, Version=v4.8">
			<Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="FrameworkAssembliesPath" />
		</GetReferenceAssemblyPaths>

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread global.json
@@ -0,0 +1,6 @@
{
"sdk": {
"version": "10.0.100",
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

PR description says "Added global.json with SDK 10.0.0", but the actual pinned SDK is "10.0.100". Please align the PR description (or the file) so the expected toolchain is unambiguous.

Copilot uses AI. Check for mistakes.
Comment thread src/Config/CS_SDK.props
Comment on lines +6 to +7
<TargetFramework Condition="'$(Platform)' == 'NET100'">net10.0-windows</TargetFramework>
<DCoreLibSubFolder>net10.0</DCoreLibSubFolder>
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

The PR notes say DCoreLibSubFolder should remain net8.0 for NET100 until the DynamoVisualProgramming packages are published for .NET 10, but the props file now unconditionally sets it to net10.0. This mismatch is likely to break local builds that rely on lib\Revit {version}\{subfolder}. Consider setting DCoreLibSubFolder to net8.0 for NET100 (temporarily), or making it conditional/overridable via the imported version props so the build can continue using net8 assets while targeting net10.

Copilot uses AI. Check for mistakes.
Comment thread src/Config/CS_SDK.props
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET80'">net8.0</DCoreLibSubFolder>
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET70'">net6.0</DCoreLibSubFolder>
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET60'">net6.0</DCoreLibSubFolder>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">$(SolutionDir)..\lib\Revit $(RevitVersionNumber)\$(DCoreLibSubFolder)</REVITAPI>
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

The PR notes say DCoreLibSubFolder should remain net8.0 for NET100 until the DynamoVisualProgramming packages are published for .NET 10, but the props file now unconditionally sets it to net10.0. This mismatch is likely to break local builds that rely on lib\Revit {version}\{subfolder}. Consider setting DCoreLibSubFolder to net8.0 for NET100 (temporarily), or making it conditional/overridable via the imported version props so the build can continue using net8 assets while targeting net10.

Copilot uses AI. Check for mistakes.
Comment thread src/Config/packages.aget
Comment on lines +5 to +11
"DynamoVisualProgramming.Core": "3.3.2.11986",
"DynamoVisualProgramming.DynamoCoreNodes": "3.3.2.11986",
"DynamoVisualProgramming.DynamoServices": "3.3.2.11986",
"DynamoVisualProgramming.Tests": "3.3.2.11986",
"DynamoVisualProgramming.WpfUILibrary": "3.3.2.11986",
"DynamoVisualProgramming.ZeroTouchLibrary": "3.3.2.11986",
"DynamoVisualProgramming.DynamoSamples": "3.3.2.11986",
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

The PR notes explicitly say the DynamoVisualProgramming.* packages “are not updated”, but this change bumps them from 3.3.1.7726 to 3.3.2.11986. Please update the Notes section to reflect the actual change, or revert these package bumps if the intent is truly to keep them unchanged for now.

Copilot uses AI. Check for mistakes.
Comment thread src/Config/CS_SDK.props
<TestOutputPath Condition=" '$(TestOutputPath)' == '' ">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\Revit</TestOutputPath>

<NoWarn>MSB3539</NoWarn>
<NoWarn>MSB3539;CS3001;CS3002;CS3003;CS3009;CS3016;CS3027</NoWarn>
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

This adds broad suppression of multiple CS30xx warnings (typically CLS compliance-related). If these are intentional, consider documenting why (e.g., with an XML comment near the property), or scoping the suppression to the specific projects that generate the warnings (instead of the shared SDK props) to avoid hiding new warnings introduced later.

Suggested change
<NoWarn>MSB3539;CS3001;CS3002;CS3003;CS3009;CS3016;CS3027</NoWarn>
<!-- Keep shared warning suppression narrowly scoped; add any CLS-related CS30xx suppressions in the specific project file that requires them. -->
<NoWarn>MSB3539</NoWarn>

Copilot uses AI. Check for mistakes.
Comment thread src/Config/CS_SDK.props
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Architecture $(RevitVersionNumber)</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit $(RevitVersionNumber)</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Preview Release</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit 2025</REVITAPI>
Copy link

Copilot AI Apr 15, 2026

Choose a reason for hiding this comment

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

The final fallback hard-codes "Revit 2025", which is redundant when RevitVersionNumber is 2025 (it duplicates line 23) and inconsistent when RevitVersionNumber changes (it won’t track the selected version). Consider removing this hard-coded path, or parameterizing it in a way that matches the earlier fallbacks.

Suggested change
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit 2025</REVITAPI>

Copilot uses AI. Check for mistakes.
@Mikhinja Mikhinja merged commit 54589fd into Revit2025 Apr 15, 2026
2 checks passed
@Mikhinja Mikhinja deleted the fusneif/REVIT-249324/REVIT-249325/REVIT-249329/d4r-2025-net10 branch April 15, 2026 12:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants