Skip to content

Commit 54589fd

Browse files
REVIT-249324/249325/249329: Migrate DynamoRevit to .NET 10 (Revit 2025) (#3307)
## 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.
1 parent 603968e commit 54589fd

895 files changed

Lines changed: 2740 additions & 18966 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,5 @@ test/SystemInJson
225225

226226
# Icon resources
227227
/src/DynamoRevitIcons/*.resources
228+
229+
logs/*

global.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sdk": {
3+
"version": "10.0.100",
4+
"rollForward": "minor"
5+
}
6+
}

src/AssemblySharedInfoGenerator/AssemblySharedInfo.tt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,6 @@ using System.Runtime.InteropServices;
6969
<#+
7070
int MajorVersion = 3;
7171
int MinorVersion = 3;
72-
int BuildNumber = 0;
72+
int BuildNumber = 2;
7373
int RevisionNumber = ((int)(DateTime.UtcNow - new DateTime(2023,1,1)).TotalDays)*10+((int)DateTime.UtcNow.Hour)/3;
7474
#>

src/Config/CS_SDK.props

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
<Project>
22
<Import Project="$(SolutionDir)Config/user_local.props" />
33
<PropertyGroup>
4-
<Platforms>NET70;NET80</Platforms>
4+
<Platforms>NET100</Platforms>
55
<PlatformTarget >x64</PlatformTarget>
6-
<TargetFramework Condition="'$(Platform)' == 'NET80'">net8.0-windows</TargetFramework>
7-
<TargetFramework Condition="'$(Platform)' == 'NET70'">net7.0-windows</TargetFramework>
8-
<TargetFramework Condition="'$(Platform)' == 'NET60'">net6.0-windows</TargetFramework>
9-
<TargetFramework Condition="'$(Platform)' == 'net48'">net48</TargetFramework>
6+
<TargetFramework Condition="'$(Platform)' == 'NET100'">net10.0-windows</TargetFramework>
7+
<DCoreLibSubFolder>net10.0</DCoreLibSubFolder>
108
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">17.0</VisualStudioVersion>
119
<RevitVersionNumber Condition=" '$(RevitVersionNumber)' == '' ">2025</RevitVersionNumber>
1210
<REVIT_VERSION>Revit_$(RevitVersionNumber)</REVIT_VERSION>
@@ -20,22 +18,19 @@
2018

2119
<DYNAMOTESTAPI Condition=" '$(DYNAMOTESTAPI)' == '' ">C:\Program Files\Dynamo 0.7</DYNAMOTESTAPI>
2220

23-
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET80'">net8.0</DCoreLibSubFolder>
24-
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET70'">net6.0</DCoreLibSubFolder>
25-
<DCoreLibSubFolder Condition="'$(Platform)' == 'NET60'">net6.0</DCoreLibSubFolder>
2621
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">$(SolutionDir)..\lib\Revit $(RevitVersionNumber)\$(DCoreLibSubFolder)</REVITAPI>
2722
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Architecture $(RevitVersionNumber)</REVITAPI>
2823
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit $(RevitVersionNumber)</REVITAPI>
29-
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Preview Release</REVITAPI>
24+
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit 2025</REVITAPI>
3025

3126
<BaseIntermediateOutputPath>$(SolutionDir)..\obj\$(Configuration)\$(Platform)\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
3227
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
3328
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
34-
<DefaultOutputPath>$(SolutionDir)..\bin\$(Configuration)\$(Platform)\$(REVIT_VERSION)</DefaultOutputPath>
29+
<DefaultOutputPath>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\Revit</DefaultOutputPath>
3530
<OutputPath Condition=" '$(OutputPath)' == '' ">$(DefaultOutputPath)</OutputPath>
36-
<TestOutputPath Condition=" '$(TestOutputPath)' == '' ">$(SolutionDir)..\bin\$(Configuration)\$(Platform)\$(REVIT_VERSION)</TestOutputPath>
31+
<TestOutputPath Condition=" '$(TestOutputPath)' == '' ">$(SolutionDir)..\bin\$(Platform)\$(Configuration)\Revit</TestOutputPath>
3732

38-
<NoWarn>MSB3539</NoWarn>
33+
<NoWarn>MSB3539;CS3001;CS3002;CS3003;CS3009;CS3016;CS3027</NoWarn>
3934
</PropertyGroup>
4035
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
4136
<DebugSymbols>true</DebugSymbols>

src/Config/packages.aget

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,20 @@
22
"nuget": {
33
"references": {
44
"DynamicLanguageRuntime": "1.2.2",
5-
"DynamoVisualProgramming.Core": "3.3.1.7726",
6-
"DynamoVisualProgramming.DynamoCoreNodes": "3.3.1.7726",
7-
"DynamoVisualProgramming.DynamoServices": "3.3.1.7726",
8-
"DynamoVisualProgramming.Tests": "3.3.1.7726",
9-
"DynamoVisualProgramming.WpfUILibrary": "3.3.1.7726",
10-
"DynamoVisualProgramming.ZeroTouchLibrary": "3.3.1.7726",
11-
"DynamoVisualProgramming.DynamoSamples": "3.3.1.7726",
5+
"DynamoVisualProgramming.Core": "3.3.2.11986",
6+
"DynamoVisualProgramming.DynamoCoreNodes": "3.3.2.11986",
7+
"DynamoVisualProgramming.DynamoServices": "3.3.2.11986",
8+
"DynamoVisualProgramming.Tests": "3.3.2.11986",
9+
"DynamoVisualProgramming.WpfUILibrary": "3.3.2.11986",
10+
"DynamoVisualProgramming.ZeroTouchLibrary": "3.3.2.11986",
11+
"DynamoVisualProgramming.DynamoSamples": "3.3.2.11986",
1212
"Greg": "3.0.1.4707",
1313
"GregRevitAuth": "3.0.8935.26399",
1414
"pythonnet_py38_win": "2.5.1",
1515
"Newtonsoft.Json": "13.0.1",
1616
"NUnit": "3.13.3",
1717
"Prism": "4.1.0",
18-
"RestSharp": "112.0.0",
19-
"System.Resources.Extensions": "5.0.0"
18+
"RestSharp": "112.0.0"
2019
}
2120
}
2221
}

src/DynamoRevit.All.sln

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
5454
ProjectSection(SolutionItems) = preProject
5555
..\.version = ..\.version
5656
..\CHANGELOG.md = ..\CHANGELOG.md
57+
..\global.json = ..\global.json
5758
..\README.md = ..\README.md
5859
EndProjectSection
5960
EndProject
@@ -78,62 +79,62 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "config", "config", "{956846
7879
EndProject
7980
Global
8081
GlobalSection(SolutionConfigurationPlatforms) = preSolution
81-
Debug|NET80 = Debug|NET80
82-
Release|NET80 = Release|NET80
82+
Debug|NET100 = Debug|NET100
83+
Release|NET100 = Release|NET100
8384
EndGlobalSection
8485
GlobalSection(ProjectConfigurationPlatforms) = postSolution
85-
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Debug|NET80.ActiveCfg = Debug|NET80
86-
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Debug|NET80.Build.0 = Debug|NET80
87-
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Release|NET80.ActiveCfg = Release|NET80
88-
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Release|NET80.Build.0 = Release|NET80
89-
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Debug|NET80.ActiveCfg = Debug|NET80
90-
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Debug|NET80.Build.0 = Debug|NET80
91-
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Release|NET80.ActiveCfg = Release|NET80
92-
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Release|NET80.Build.0 = Release|NET80
93-
{75940ACC-3708-4526-8D91-7E3365BAF682}.Debug|NET80.ActiveCfg = Debug|NET80
94-
{75940ACC-3708-4526-8D91-7E3365BAF682}.Debug|NET80.Build.0 = Debug|NET80
95-
{75940ACC-3708-4526-8D91-7E3365BAF682}.Release|NET80.ActiveCfg = Release|NET80
96-
{75940ACC-3708-4526-8D91-7E3365BAF682}.Release|NET80.Build.0 = Release|NET80
97-
{E4701F9E-41AB-4044-8166-85D924FEB632}.Debug|NET80.ActiveCfg = Debug|NET80
98-
{E4701F9E-41AB-4044-8166-85D924FEB632}.Debug|NET80.Build.0 = Debug|NET80
99-
{E4701F9E-41AB-4044-8166-85D924FEB632}.Release|NET80.ActiveCfg = Release|NET80
100-
{E4701F9E-41AB-4044-8166-85D924FEB632}.Release|NET80.Build.0 = Release|NET80
101-
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Debug|NET80.ActiveCfg = Debug|NET80
102-
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Debug|NET80.Build.0 = Debug|NET80
103-
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Release|NET80.ActiveCfg = Release|NET80
104-
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Release|NET80.Build.0 = Release|NET80
105-
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Debug|NET80.ActiveCfg = Debug|NET80
106-
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Debug|NET80.Build.0 = Debug|NET80
107-
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Release|NET80.ActiveCfg = Release|NET80
108-
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Release|NET80.Build.0 = Release|NET80
109-
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Debug|NET80.ActiveCfg = Debug|NET80
110-
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Debug|NET80.Build.0 = Debug|NET80
111-
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Release|NET80.ActiveCfg = Release|NET80
112-
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Release|NET80.Build.0 = Release|NET80
113-
{53D05530-CF64-4883-8F86-B2B819934F83}.Debug|NET80.ActiveCfg = Debug|NET80
114-
{53D05530-CF64-4883-8F86-B2B819934F83}.Debug|NET80.Build.0 = Debug|NET80
115-
{53D05530-CF64-4883-8F86-B2B819934F83}.Release|NET80.ActiveCfg = Release|NET80
116-
{53D05530-CF64-4883-8F86-B2B819934F83}.Release|NET80.Build.0 = Release|NET80
117-
{589F14D7-2937-479C-834A-D44197CB1930}.Debug|NET80.ActiveCfg = Debug|NET80
118-
{589F14D7-2937-479C-834A-D44197CB1930}.Debug|NET80.Build.0 = Debug|NET80
119-
{589F14D7-2937-479C-834A-D44197CB1930}.Release|NET80.ActiveCfg = Release|NET80
120-
{589F14D7-2937-479C-834A-D44197CB1930}.Release|NET80.Build.0 = Release|NET80
121-
{133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|NET80.ActiveCfg = Debug|NET80
122-
{133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|NET80.Build.0 = Debug|NET80
123-
{133FC760-5699-46D9-BEA6-E816B5F01016}.Release|NET80.ActiveCfg = Release|NET80
124-
{133FC760-5699-46D9-BEA6-E816B5F01016}.Release|NET80.Build.0 = Release|NET80
125-
{9ADADC68-36A3-4A21-9B54-298154A88720}.Debug|NET80.ActiveCfg = Debug|NET80
126-
{9ADADC68-36A3-4A21-9B54-298154A88720}.Debug|NET80.Build.0 = Debug|NET80
127-
{9ADADC68-36A3-4A21-9B54-298154A88720}.Release|NET80.ActiveCfg = Release|NET80
128-
{9ADADC68-36A3-4A21-9B54-298154A88720}.Release|NET80.Build.0 = Release|NET80
129-
{A31E274C-524A-40CA-85FF-595D3DB53777}.Debug|NET80.ActiveCfg = Debug|NET80
130-
{A31E274C-524A-40CA-85FF-595D3DB53777}.Debug|NET80.Build.0 = Debug|NET80
131-
{A31E274C-524A-40CA-85FF-595D3DB53777}.Release|NET80.ActiveCfg = Release|NET80
132-
{A31E274C-524A-40CA-85FF-595D3DB53777}.Release|NET80.Build.0 = Release|NET80
133-
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Debug|NET80.ActiveCfg = Debug|NET80
134-
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Debug|NET80.Build.0 = Debug|NET80
135-
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Release|NET80.ActiveCfg = Release|NET80
136-
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Release|NET80.Build.0 = Release|NET80
86+
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Debug|NET100.ActiveCfg = Debug|NET100
87+
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Debug|NET100.Build.0 = Debug|NET100
88+
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Release|NET100.ActiveCfg = Release|NET100
89+
{FD56AE51-739E-4893-8DE4-925D60C7097C}.Release|NET100.Build.0 = Release|NET100
90+
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Debug|NET100.ActiveCfg = Debug|NET100
91+
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Debug|NET100.Build.0 = Debug|NET100
92+
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Release|NET100.ActiveCfg = Release|NET100
93+
{0BC2A611-BD0E-4FCC-A1DE-81F14ED369B2}.Release|NET100.Build.0 = Release|NET100
94+
{75940ACC-3708-4526-8D91-7E3365BAF682}.Debug|NET100.ActiveCfg = Debug|NET100
95+
{75940ACC-3708-4526-8D91-7E3365BAF682}.Debug|NET100.Build.0 = Debug|NET100
96+
{75940ACC-3708-4526-8D91-7E3365BAF682}.Release|NET100.ActiveCfg = Release|NET100
97+
{75940ACC-3708-4526-8D91-7E3365BAF682}.Release|NET100.Build.0 = Release|NET100
98+
{E4701F9E-41AB-4044-8166-85D924FEB632}.Debug|NET100.ActiveCfg = Debug|NET100
99+
{E4701F9E-41AB-4044-8166-85D924FEB632}.Debug|NET100.Build.0 = Debug|NET100
100+
{E4701F9E-41AB-4044-8166-85D924FEB632}.Release|NET100.ActiveCfg = Release|NET100
101+
{E4701F9E-41AB-4044-8166-85D924FEB632}.Release|NET100.Build.0 = Release|NET100
102+
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Debug|NET100.ActiveCfg = Debug|NET100
103+
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Debug|NET100.Build.0 = Debug|NET100
104+
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Release|NET100.ActiveCfg = Release|NET100
105+
{9E79DC8D-25B1-491F-B094-EA39DE1BBC66}.Release|NET100.Build.0 = Release|NET100
106+
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Debug|NET100.ActiveCfg = Debug|NET100
107+
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Debug|NET100.Build.0 = Debug|NET100
108+
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Release|NET100.ActiveCfg = Release|NET100
109+
{AD0499ED-50D3-46F4-9FC9-3F71D88C4870}.Release|NET100.Build.0 = Release|NET100
110+
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Debug|NET100.ActiveCfg = Debug|NET100
111+
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Debug|NET100.Build.0 = Debug|NET100
112+
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Release|NET100.ActiveCfg = Release|NET100
113+
{06B9E5B0-7C50-4351-9D88-E159DC25755F}.Release|NET100.Build.0 = Release|NET100
114+
{53D05530-CF64-4883-8F86-B2B819934F83}.Debug|NET100.ActiveCfg = Debug|NET100
115+
{53D05530-CF64-4883-8F86-B2B819934F83}.Debug|NET100.Build.0 = Debug|NET100
116+
{53D05530-CF64-4883-8F86-B2B819934F83}.Release|NET100.ActiveCfg = Release|NET100
117+
{53D05530-CF64-4883-8F86-B2B819934F83}.Release|NET100.Build.0 = Release|NET100
118+
{589F14D7-2937-479C-834A-D44197CB1930}.Debug|NET100.ActiveCfg = Debug|NET100
119+
{589F14D7-2937-479C-834A-D44197CB1930}.Debug|NET100.Build.0 = Debug|NET100
120+
{589F14D7-2937-479C-834A-D44197CB1930}.Release|NET100.ActiveCfg = Release|NET100
121+
{589F14D7-2937-479C-834A-D44197CB1930}.Release|NET100.Build.0 = Release|NET100
122+
{133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|NET100.ActiveCfg = Debug|NET100
123+
{133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|NET100.Build.0 = Debug|NET100
124+
{133FC760-5699-46D9-BEA6-E816B5F01016}.Release|NET100.ActiveCfg = Release|NET100
125+
{133FC760-5699-46D9-BEA6-E816B5F01016}.Release|NET100.Build.0 = Release|NET100
126+
{9ADADC68-36A3-4A21-9B54-298154A88720}.Debug|NET100.ActiveCfg = Debug|NET100
127+
{9ADADC68-36A3-4A21-9B54-298154A88720}.Debug|NET100.Build.0 = Debug|NET100
128+
{9ADADC68-36A3-4A21-9B54-298154A88720}.Release|NET100.ActiveCfg = Release|NET100
129+
{9ADADC68-36A3-4A21-9B54-298154A88720}.Release|NET100.Build.0 = Release|NET100
130+
{A31E274C-524A-40CA-85FF-595D3DB53777}.Debug|NET100.ActiveCfg = Debug|NET100
131+
{A31E274C-524A-40CA-85FF-595D3DB53777}.Debug|NET100.Build.0 = Debug|NET100
132+
{A31E274C-524A-40CA-85FF-595D3DB53777}.Release|NET100.ActiveCfg = Release|NET100
133+
{A31E274C-524A-40CA-85FF-595D3DB53777}.Release|NET100.Build.0 = Release|NET100
134+
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Debug|NET100.ActiveCfg = Debug|NET100
135+
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Debug|NET100.Build.0 = Debug|NET100
136+
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Release|NET100.ActiveCfg = Release|NET100
137+
{92A46535-D870-4E1A-AED0-7492789E9C4A}.Release|NET100.Build.0 = Release|NET100
137138
EndGlobalSection
138139
GlobalSection(SolutionProperties) = preSolution
139140
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)