-
Notifications
You must be signed in to change notification settings - Fork 201
D4 r da 2027 #3384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
pinzart90
wants to merge
78
commits into
Revit2027
Choose a base branch
from
D4R_DA_2027
base: Revit2027
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
D4 r da 2027 #3384
Changes from all commits
Commits
Show all changes
78 commits
Select commit
Hold shift + click to select a range
4c571df
updated GregRevitAuth (#3027)
zeusongit 160168e
fix two failed tests
vpavel04 7ca1f68
bumpup version to make build with signed binaries
Mikhinja 2701ba0
bump up version to publish
Mikhinja d35fb7e
Update DynamoRevit.cs (#3033)
aparajit-pratap 2ee6da7
Update Dynamo Core to 3.0.2.7476
Mikhinja cc2123f
Update DynamoRevit versioning to 3.0.2 to align with DynamoCore
Mikhinja e19d8ed
Fix a couple of Regression tests
Mikhinja eecab07
Update Dynamo Core to 3.0.3.7597
Mikhinja ab901bc
Update DynamoRevit versioning to 3.0.3
Mikhinja 3c29dbb
Version *.customization.dll files with number from other output binary
Mikhinja 5e55ee9
Fix regression in familytype.bygeometry (#3066)
saintentropy 944c23e
Integrate Dynamo Core 3.1 in Revit 2025.2
Mikhinja b5a20fb
Update D4R minor version to 3.1.0
Mikhinja 23533ff
Update Dynamo to 3.2.0
Mikhinja 11e4076
Update Dynamo to 3.2.0
Mikhinja a6354ce
Update Dynamo to 3.2.0
Mikhinja 3a22623
* update Dynamo Core to 3.2.1
Mikhinja 4836afd
* update Dynamo Core to 3.2.1
Mikhinja 0278a00
Merge branch 'RC3.2.0_Revit2025' of https://github.com/DynamoDS/Dynam…
Mikhinja cce1a96
REVIT-222587
Mikhinja ce5f184
change content publishing
Mikhinja 2ad9983
Roof.Points bug fix integration in Revit 2025.3 (#3081)
AdrianaStanica a4eb9ca
update Dynamo Core to 3.2.2.5494 (#3084)
Mikhinja ffe4ed3
Create ContinuousLocalization.yml
ZbynekHanak-RWS bc2a8fa
Update Dynamo Core to 3.3.0
Mikhinja 636c476
update
pinzart90 0279992
update
pinzart90 76742f2
update
pinzart90 8fc45d5
update
pinzart90 b3a4fb8
Update RevitNodesUI.csproj
pinzart90 0227ab8
UPDATE
pinzart90 2d268cd
update
pinzart90 f89cd62
update
pinzart90 aaf1194
update
pinzart90 54896d9
update
pinzart90 8b754f8
Update DisposeLogic.cs
pinzart90 3019b88
update
pinzart90 efb08c5
update
pinzart90 db62a50
Merge branch 'master' into D4R_DA
pinzart90 5dde24a
update
pinzart90 ff9a951
update
pinzart90 88f1641
Update AssemblyInfoGenerator.csproj
pinzart90 18bea14
Update AssemblyInfoGenerator.csproj
pinzart90 e3f8b61
update
pinzart90 c94a31e
Update DynamoRevitIcons.csproj
pinzart90 32d9219
update
pinzart90 581914c
update
pinzart90 1202a2c
update
pinzart90 1a1e913
update
pinzart90 8fdb261
update
pinzart90 6dffdd5
update
pinzart90 f184ad8
Update DAEntrypoint.cs
pinzart90 3397634
update
pinzart90 c54f7c9
update
pinzart90 348ffc6
update
pinzart90 2f5e37c
Update DAEntrypoint.cs
pinzart90 c59fdf6
update
pinzart90 9b3e6bf
Update RevitServices.csproj
pinzart90 c1ed0fa
Update RevitServices.csproj
pinzart90 c7217ff
Update DocumentManager.cs
pinzart90 4de2399
Merge branch 'master' into D4R_DA
pinzart90 1f3f14f
update for latest master
pinzart90 12612bf
simplify
pinzart90 793010c
update
pinzart90 bc6c714
Update DynamoRevitApp.cs
pinzart90 0542287
Add cloud model support (#3252)
pinzart90 a92411d
Update DAEntrypoint.cs
pinzart90 c387e30
update
pinzart90 921cc9a
DA logger for 2027 (#3298)
mjkkirschner bfbf45c
Merge branch 'D4DA_2027' into D4R_DA_2027
pinzart90 dc951f6
Add hardcoded outputs folder (#3305)
pinzart90 080585f
Default Output folder (#3306)
pinzart90 64eafa2
override the local revit model when saving (#3312)
pinzart90 209b3ea
Merge remote-tracking branch 'origin/Revit2027' into D4R_DA_2027
pinzart90 dc6d268
update
pinzart90 cdea4dc
Isolate the DA Application class (#3299)
pinzart90 96c8951
update for transactions (#3303)
pinzart90 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| # Build System Cleanup — Open Questions & TODOs | ||
|
|
||
| These are known issues and open design questions in the build system that need | ||
| to be resolved, particularly for the `D4R_DA_2027` branch targeting Revit 2027 / | ||
| net10. | ||
|
|
||
| --- | ||
|
|
||
| ## 1. Platform naming is confusing and redundant | ||
|
|
||
| `CS_SDK.props` defines three platforms: | ||
|
|
||
| | Platform | TargetFramework | Notes | | ||
| |------------|---------------------|-------| | ||
| | `NET80` | `net8.0-windows` | Interactive Revit build (Revit 2026) | | ||
| | `NET10_DA` | `net8.0-windows` | **Same TFM as NET80 on the 2026 branch — name implies net10 but it's net8** | | ||
| | `NET100` | `net10.0-windows` | Revit 2027 targeting net10 | | ||
|
|
||
| For the `D4R_DA_2027` branch (Revit 2027), `NET100` is the primary TFM. | ||
| `NET10_DA` is now genuinely net10 on this branch (unlike on 2026), but the naming | ||
| is still confusing without context. | ||
|
|
||
| **Important:** `_DA` in the platform name is a meaningful build profile — it is not just a | ||
| TFM alias. Any platform whose name contains `_DA` triggers these behaviours across multiple projects: | ||
|
|
||
| | Project | What `_DA` removes | | ||
| |---|---| | ||
| | `CS_SDK.props` | Defines `DESIGN_AUTOMATION` compile constant | | ||
| | `DynamoRevit.csproj` | Removes `DynamoRevit.cs`, `DynamoRevitApp.cs`, entire `ViewModel/` (interactive startup + ribbon) | | ||
| | `RevitNodesUI.csproj` | Removes all WPF controls, selection dialogs, XAML pages | | ||
| | `RevitServices.csproj` | Removes `Threading/*.cs` (UI thread marshalling, not needed in headless DA) | | ||
|
|
||
| So the `_DA` suffix carries real semantic weight. The problem is solely the `NET10` | ||
| prefix on the 2026 branch, which implied net10 when the TFM was actually net8. | ||
|
|
||
| **Questions:** | ||
| - Should DA just use `NET100` with a separate property/flag to denote DA vs interactive, | ||
| rather than a separate platform name? | ||
| - If `NET10_DA` stays, should it be renamed (e.g. `NET100_DA`) to align with the actual TFM name? | ||
|
|
||
| --- | ||
|
|
||
| ## 2. Solution file responsibilities are unclear | ||
|
|
||
| | Solution | Projects included | Typical build command | | ||
| |-----------------------|--------------------------------|-----------------------| | ||
| | `DynamoRevit.DA.sln` | DADynamoApp + deps only | `/p:Platform=NET10_DA` | | ||
| | `DynamoRevit.All.sln` | Everything incl. tests | `/p:Platform=NET80` or `NET100` | | ||
|
|
||
| `DADynamoApp` is **not** listed explicitly in `All.sln` — it is pulled in as a | ||
| transitive project reference from `RevitSystemTests`. This causes the solution to | ||
| build it without a proper platform mapping, which leads to build errors under | ||
| `dotnet build` with .NET SDK 10 (see issue 3 below). | ||
|
|
||
| **Questions:** | ||
| - Should `DADynamoApp` be a first-class explicit project in `All.sln`? | ||
| - Should `DA.sln` be a proper subset configuration of `All.sln`, or kept fully separate? | ||
| - Is there a reason DA uses `NET10_DA` platform instead of `NET100`? If not, unify them | ||
| and remove the extra platform. | ||
|
|
||
| --- | ||
|
|
||
| ## 3. `dotnet build` vs VS MSBuild inconsistency | ||
|
|
||
| `DynamoRevit.All.sln` builds cleanly with VS MSBuild: | ||
| ``` | ||
| & "C:\Program Files\Microsoft Visual Studio\18\Professional\MSBuild\Current\Bin\MSBuild.exe" DynamoRevit.All.sln -p:Configuration=Debug -p:Platform=NET100 -m | ||
| ``` | ||
|
|
||
| But fails with `dotnet build` using .NET SDK 10: | ||
| ``` | ||
| dotnet build DynamoRevit.All.sln -c Debug /p:Platform=NET100 | ||
| ``` | ||
|
|
||
| Two known `dotnet build`-only failures: | ||
|
|
||
| **a) `DADynamoApp` — `MSB3992: 'RootElementName' is not set`** | ||
| - Root cause: `EnableDynamicLoading=true` causes SDK 10 to set | ||
| `UseAttributeForTargetFrameworkInfoPropertyNames=true`, which requires | ||
| `RootElementName` to be set explicitly. VS MSBuild does not have this requirement. | ||
| - Possible fixes: set `<UseAttributeForTargetFrameworkInfoPropertyNames>false</UseAttributeForTargetFrameworkInfoPropertyNames>`, | ||
| or set `<RootElementName>DADynamoApp</RootElementName>` explicitly. | ||
|
|
||
| **b) `DynamoRevitIcons` — `ResGen.exe not supported on .NET Core MSBuild`** | ||
| - Pre-existing issue. The `.resx` code generation step uses ResGen.exe which is | ||
| not available in the .NET Core MSBuild toolchain. | ||
| - Possible fix: migrate resource generation to use `<EmbeddedResource>` without | ||
| ResGen, or exclude from `dotnet build` paths. | ||
|
|
||
| **Question:** Is `dotnet build` a supported/required path in CI, or does CI always | ||
| use VS MSBuild? The `Jenkinsfile` delegates to `DynamoRevitUtils` — need to check | ||
| those build scripts to confirm. | ||
|
|
||
| --- | ||
|
|
||
| ## 4. Research needed / action items | ||
|
|
||
| - [ ] Check `DynamoRevitUtils` Jenkins scripts: which solution, which platform, `dotnet` or VS MSBuild? | ||
| - [ ] Confirm whether `NET10_DA` is used in any CI job for this branch | ||
| - [ ] Decide on NET10_DA rename/merge with NET100 | ||
| - [ ] Decide whether All.sln should be the canonical "build everything" solution | ||
| - [ ] Fix `dotnet build` compatibility if CI requires it (MSB3992 + ResGen) | ||
| - [ ] Add `DADynamoApp` explicitly to `All.sln` with correct platform mapping |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| | ||
| using Autodesk.Revit.ApplicationServices; | ||
| using Autodesk.Revit.DB; | ||
| using System.Diagnostics; | ||
| using System.Reflection; | ||
|
|
||
| namespace DADynamoApp | ||
| { | ||
| [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] | ||
| [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] | ||
| public class DAApplication : IExternalDBApplication | ||
| { | ||
| private string ParentPath; | ||
| private string CurrentDirectory; | ||
| private readonly string PythonDllFolder = "pythonDependencies"; | ||
|
|
||
| private DAEntrypoint daEntryPoint; | ||
|
|
||
| public ExternalDBApplicationResult OnShutdown(ControlledApplication application) | ||
| { | ||
| AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException; | ||
| AppDomain.CurrentDomain.ProcessExit -= CurrentDomain_ProcessExit; | ||
| AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; | ||
| return daEntryPoint.OnShutdown(application); | ||
| } | ||
|
|
||
| public ExternalDBApplicationResult OnStartup(ControlledApplication application) | ||
| { | ||
| AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; | ||
| AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; | ||
| AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; | ||
|
|
||
| CurrentDirectory = Directory.GetCurrentDirectory(); | ||
| ParentPath = Directory.GetParent(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)).FullName; | ||
|
|
||
| Console.WriteLine("<<!>> Starting to load DAEntrypoint"); | ||
|
|
||
| daEntryPoint ??= new DAEntrypoint(); | ||
|
|
||
| return daEntryPoint.OnStartup(application); | ||
| } | ||
|
|
||
| private static void CurrentDomain_ProcessExit(object? sender, EventArgs e) | ||
| { | ||
| Process proc = Process.GetCurrentProcess(); | ||
| Console.WriteLine($"Dynamo exiting with Peak physical memory {proc.PeakWorkingSet64} bytes"); | ||
| if (proc.HasExited) | ||
| { | ||
| Console.WriteLine($"Dynamo exiting with code {proc.ExitCode}"); | ||
| } | ||
| } | ||
|
|
||
| private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) | ||
| { | ||
| Console.WriteLine($"Unhandled exception: {e}"); | ||
| } | ||
|
|
||
| private Assembly? CurrentDomain_AssemblyResolve(object? sender, ResolveEventArgs args) | ||
| { | ||
| return DynamoRevitAssemblyResolver.ResolveDynamoAssembly(ParentPath, [Path.Combine(CurrentDirectory, PythonDllFolder)], args); | ||
| } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk"> | ||
| <ImportGroup Label="PropertySheets"> | ||
| <Import Project="$(SolutionDir)Config\CS_SDK.props" /> | ||
| </ImportGroup> | ||
|
|
||
| <PropertyGroup> | ||
| <ImplicitUsings>enable</ImplicitUsings> | ||
| <Nullable>enable</Nullable> | ||
| <GenerateAssemblyInfo>false</GenerateAssemblyInfo> | ||
| <!--EnableDynamicLoading prepares the project so that it can be used as a plugin --> | ||
| <!--https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support#simple-plugin-with-no-dependencies--> | ||
| <EnableDynamicLoading>true</EnableDynamicLoading> | ||
| </PropertyGroup> | ||
|
|
||
| <ItemGroup> | ||
| <Compile Remove="obj\**" /> | ||
| <EmbeddedResource Remove="obj\**" /> | ||
| <None Remove="obj\**" /> | ||
| </ItemGroup> | ||
|
|
||
| <ItemGroup> | ||
| <Reference Include="RevitAPI"> | ||
| <HintPath>$(REVITAPI)\RevitAPI.dll</HintPath> | ||
| <Private>False</Private> | ||
| </Reference> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <PackageReference Include="Autodesk.Forge.DesignAutomation.Revit" Version="2026.0.0" /> | ||
| <PackageReference Include="Autodesk.DataManagement" Version="2.0.0-beta4" /> | ||
| <PackageReference Include="DynamoVisualProgramming.Core" Version="$(DYNAMOCORE_VERSION)" ExcludeAssets="runtime" GeneratePathProperty="true" /> | ||
| <PackageReference Include="DynamoPlayer" Version="6.0.2" ExcludeAssets="runtime" GeneratePathProperty="true" /> | ||
| <PackageReference Include="GregRevitAuth" Version="$(GregRevitAuth_VERSION)" GeneratePathProperty="true"> | ||
| <ExcludeAssets>runtime</ExcludeAssets> | ||
| </PackageReference> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <ProjectReference Include="..\DynamoRevit\DynamoRevit.csproj" /> | ||
| <ProjectReference Include="..\Libraries\RevitNodes\RevitNodes.csproj" /> | ||
| <ProjectReference Include="..\Libraries\RevitServices\RevitServices.csproj" /> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <Reference Include="DynamoPlayer.Models"> | ||
| <HintPath>$(PkgDynamoPlayer)\bin\Release\net8.0\bin\DynamoPlayer.Models.dll</HintPath> | ||
| <Private>False</Private> | ||
| </Reference> | ||
| <Reference Include="DynamoPlayer.Server"> | ||
| <HintPath>$(PkgDynamoPlayer)\bin\Release\net8.0\bin\DynamoPlayer.Server.dll</HintPath> | ||
| <Private>False</Private> | ||
| </Reference> | ||
| <Reference Include="DynamoPlayer.Workflows"> | ||
| <HintPath>$(PkgDynamoPlayer)\bin\Release\net8.0\bin\DynamoPlayer.Workflows.dll</HintPath> | ||
| <Private>False</Private> | ||
| </Reference> | ||
| </ItemGroup> | ||
| <Target Name="Copy dll" AfterTargets="Build"> | ||
| <Copy SourceFiles="$(PkgGregRevitAuth)\lib\$(DotnetVerSubFolder)\GregRevitAuth.dll" DestinationFolder="$(OutputPath)" /> | ||
| </Target> | ||
| </Project> |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This property group now sets
DebugSymbolsandOutputPathtwice (lines 12 vs 14, and 13 vs 17). The earlier values will be overridden, which is easy to miss when editing build settings. Remove the duplicates and keep a single authoritative value for each property.