diff --git a/src/DynamoCore/Graph/Nodes/NodeModel.cs b/src/DynamoCore/Graph/Nodes/NodeModel.cs index 084a2dd8030..5791cf91648 100644 --- a/src/DynamoCore/Graph/Nodes/NodeModel.cs +++ b/src/DynamoCore/Graph/Nodes/NodeModel.cs @@ -1223,18 +1223,17 @@ protected NodeModel(IEnumerable inPorts, IEnumerable outPo RaisesModificationEvents = true; } + + internal protected AssemblyName NameOfAssemblyReferencedByNode = null; + /// /// The method returns the assembly name from which the node originated. /// /// Assembly Name internal virtual AssemblyName GetNameOfAssemblyReferencedByNode() { - AssemblyName assemblyName = null; - - var assembly = this.GetType().Assembly; - assemblyName = AssemblyName.GetAssemblyName(assembly.Location); - - return assemblyName; + NameOfAssemblyReferencedByNode ??= GetType().Assembly.GetName(); + return NameOfAssemblyReferencedByNode; } /// diff --git a/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs b/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs index 26ccfea9c91..e6dc1b6ca80 100644 --- a/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs +++ b/src/DynamoCore/Graph/Nodes/ZeroTouch/DSFunctionBase.cs @@ -84,15 +84,16 @@ public override IdentifierNode GetAstIdentifierForOutputIndex(int outputIndex) /// Assembly Name internal override AssemblyName GetNameOfAssemblyReferencedByNode() { - AssemblyName assemblyName = null; - - var descriptor = this.Controller.Definition; - if (descriptor.IsPackageMember) + if (NameOfAssemblyReferencedByNode == null) { - assemblyName = AssemblyName.GetAssemblyName(descriptor.Assembly); + var descriptor = this.Controller.Definition; + if (descriptor.IsPackageMember) + { + NameOfAssemblyReferencedByNode = AssemblyName.GetAssemblyName(descriptor.Assembly); + } } - return assemblyName; + return NameOfAssemblyReferencedByNode; } /// diff --git a/src/DynamoCore/PublicAPI.Unshipped.txt b/src/DynamoCore/PublicAPI.Unshipped.txt index f87678d8cef..7d9729b6412 100644 --- a/src/DynamoCore/PublicAPI.Unshipped.txt +++ b/src/DynamoCore/PublicAPI.Unshipped.txt @@ -1004,6 +1004,7 @@ Dynamo.Graph.Nodes.NodeModel.MarkNodeAsModified(bool forceExecute = false) -> vo Dynamo.Graph.Nodes.NodeModel.Modified -> System.Action Dynamo.Graph.Nodes.NodeModel.Name.get -> string Dynamo.Graph.Nodes.NodeModel.Name.set -> void +Dynamo.Graph.Nodes.NodeModel.NameOfAssemblyReferencedByNode -> System.Reflection.AssemblyName Dynamo.Graph.Nodes.NodeModel.NeedsForceExecution.get -> bool Dynamo.Graph.Nodes.NodeModel.NodeExecutionBegin -> System.Action Dynamo.Graph.Nodes.NodeModel.NodeExecutionEnd -> System.Action diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 3c3bf454b28..257eb61a63e 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -277,10 +277,11 @@ private void OnCurrentWorkspaceChanged(IWorkspaceModel ws) private PackageInfo GetNodePackageFromAssemblyName(AssemblyName assemblyName) { - if (NodePackageDictionary != null && NodePackageDictionary.ContainsKey(assemblyName.FullName)) + if (NodePackageDictionary?.TryGetValue(assemblyName.FullName, out var packages) == true) { - return NodePackageDictionary[assemblyName.FullName].Last(); + return packages.Last(); } + return null; } diff --git a/src/Libraries/PythonNodeModels/PythonNode.cs b/src/Libraries/PythonNodeModels/PythonNode.cs index d7427ac9d26..fbfd61e9197 100644 --- a/src/Libraries/PythonNodeModels/PythonNode.cs +++ b/src/Libraries/PythonNodeModels/PythonNode.cs @@ -70,15 +70,16 @@ public string EngineName /// Assembly Name internal override AssemblyName GetNameOfAssemblyReferencedByNode() { - AssemblyName assemblyName = null; - - var pyEng = PythonEngineManager.Instance.AvailableEngines.Where(x => x.Name.Equals(this.EngineName)).FirstOrDefault(); - if (pyEng != null) + if (NameOfAssemblyReferencedByNode == null) { - assemblyName = AssemblyName.GetAssemblyName(pyEng.GetType().Assembly.Location); + var pyEng = PythonEngineManager.Instance.AvailableEngines.Where(x => x.Name.Equals(this.EngineName)).FirstOrDefault(); + if (pyEng != null) + { + NameOfAssemblyReferencedByNode = pyEng.GetType().Assembly.GetName(); + } } - return assemblyName; + return NameOfAssemblyReferencedByNode; } ///