diff --git a/src/ScadaLink.Transport/Import/BundleImporter.cs b/src/ScadaLink.Transport/Import/BundleImporter.cs index f2cbccb..0ad0247 100644 --- a/src/ScadaLink.Transport/Import/BundleImporter.cs +++ b/src/ScadaLink.Transport/Import/BundleImporter.cs @@ -1650,8 +1650,12 @@ public sealed class BundleImporter : IBundleImporter foreach (var s in t.Scripts) CollectCallIdentifiers(s.Code, referenced); foreach (var a in t.Attributes) { + // Value can hold script-callable design-time expressions; + // DataSourceReference is an OPC UA address-space path (e.g. + // "ns=3;s=Tank.Level") and must NOT be scanned, or the dot + // delimiter will flag tag-path segments as missing references. + // Symmetric with DetectBlockersAsync. CollectCallIdentifiers(a.Value, referenced); - CollectCallIdentifiers(a.DataSourceReference, referenced); } } foreach (var m in content.ApiMethods) @@ -1664,6 +1668,7 @@ public sealed class BundleImporter : IBundleImporter foreach (var candidate in referenced.OrderBy(n => n, StringComparer.Ordinal)) { if (!LooksLikeResourceName(candidate)) continue; + if (KnownNonReferenceNames.Contains(candidate)) continue; if (sharedScriptNames.Contains(candidate) || externalSystemNames.Contains(candidate)) continue; errors.Add( $"Script references SharedScript or ExternalSystem '{candidate}' not present in bundle or target.");