DynamoDS / DynamoRevit

Dynamo Libraries for Revit
https://dynamobim.org
328 stars 184 forks source link

CPython3 - 'System.Reflection.Emit.TypeBuilder' was not found. #3008

Closed Cyril-Pop closed 2 weeks ago

Cyril-Pop commented 7 months ago

Dynamo Version

Dynamo 2.19.3

Revit Version

Revit 2024.2

Operating System

Windows 11

What did you do?

try to use events subscription with CPython3

What did you expect to see?

No Error

What did you see instead?

a Python error

Node Name: PythonScript
Package: Core.Scripting
Dynamo Version: 2.19.3.6394
Host: Dynamo Revit
Messages: PythonEvaluator.Evaluate operation failed.
The constructor on type 'System.Reflection.Emit.TypeBuilder' was not found.
Status: Warning

image

Example 1

import clr
import System
from System import EventHandler

clr.AddReference("System.Drawing")
clr.AddReference("System.Windows.Forms")
import System.Drawing
import System.Windows.Forms

from System.Drawing import *
from System.Windows.Forms import *

class Form26(Form):
    def __init__(self):
        self.InitializeComponent()

    def InitializeComponent(self):
        self._button1 = System.Windows.Forms.Button()
        self.SuspendLayout()
        # 
        self._button1.Location = System.Drawing.Point(73, 103)
        self._button1.Name = "button1"
        self._button1.Size = System.Drawing.Size(142, 43)
        self._button1.TabIndex = 0
        self._button1.Text = "button1"
        self._button1.UseVisualStyleBackColor = True
        self._button1.Click += self.Button1Click
        # 
        self.ClientSize = System.Drawing.Size(284, 261)
        self.Controls.Add(self._button1)
        self.Name = "Form26"
        self.Text = "Form26"
        self.ResumeLayout(False)

    def Button1Click(self, sender, e):
        pass

objForm = Form26()
objForm.ShowDialog()

Example 2

import clr
import System
from System import EventHandler

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import *
from Autodesk.Revit.UI.Events import *

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp = uidoc.Application

def dismiss (sender, eventArgs):
    if isinstance(eventArgs, TaskDialogShowingEventArgs):
        eventArgs.OverrideResult(TaskDialogResult.No)
    return

dialogEventHandler = EventHandler[DialogBoxShowingEventArgs](dismiss)

uiapp.DialogBoxShowing += dialogEventHandler

Stacktrace/logs

No response

Details

the error seems related to the build/compilation of PythonNet 2.5.2 (Python.Runtime) with Net.Standard 2.0 as target

there are potentially others PythonNet 2.5.2 issues due to this change (Net Framework -> Net.Standard 2.0), will probably be resolved in PythonNet 3.x.x

Cyril-Pop commented 7 months ago

Related issue https://github.com/DynamoDS/Dynamo/issues/14612

AhmadEltobshy commented 3 months ago

no updates ?

i have faced the same issue image

Amoursol commented 2 months ago

@Cyril-Pop @AhmadEltobshy We have plans to update the PythonNET bridge project as per our roadmap that should resolve a lot of CPython parity issues with IronPython. We're not yet sure of the full extent, but it should be significantly better than today.

Cyril-Pop commented 2 months ago

@Amoursol Do you have an approximate date for the integration of PythonNet 3?

Amoursol commented 2 months ago

@Amoursol Do you have an approximate date for the integration of PythonNet 3?

@Cyril-Pop unfortunately no, the one thing we really cannot do is give out dates. What I can say is that we are in planning phase and active work will start on the 1st May and are committed to enhancing the CPython experience as much as we can within the bounds of resourcing, time and other commitments. It's the top of our priority list for Q2 (May - July).

diegojsanchez commented 2 months ago

I have exactly the same problem with Civil 3D 2024.3. I also create a Form class. I will be praying for it to fix between May and July. Thank you for the information.

pak9819 commented 1 month ago

I have the same error when using winforms.