Skip to content

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

@Cyril-Pop

Description

@Cyril-Pop

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions