I’ve tried to replicate this in our project, but I couldn’t get it to work. Is it possible to use this without exporting the host?
On scanning the DLLs there is an error that is a bit weird because it seems to try to look for a VL document when scanning for types in the DLL:
SpaceMusic.PluginArchitecture.vl
would be the interfaces.vl
in your example.
I’ve copied these files into the plugins folder next to the main VL document:
Without the SpaceMusic.PluginArchitecture.vl.dll
the same error occurs.
The main document references the SpaceMusic.PluginArchitecture.vl
, the plugin architecture file also contains the nodes to scan and load plugins, could that be an issue?
EDIT:
just tried this in your example and it seems to have the same problem:
EDIT2:
I’ve tried to load the DLL of the interfaces.vl file instead of referencing the vl document, but loading it creates this error and vvvv doesn’t do anything anymore:
Exception
NullReferenceException: "Object reference not set to an instance of an object."
StackTrace:
VL.Lang.Platforms.Roslyn.AssemblySymbolSource+<>c__DisplayClass10_0 { internal VL.Lang.Platforms.Roslyn.CompiledSymbols <.ctor>b__1() { ... } }
System.Lazy`1 { private void ViaFactory(System.Threading.LazyThreadSafetyMode mode) { ... } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } }
System.Lazy`1 { private T CreateValue() { ... } }
VL.Lang.Platforms.Roslyn.AssemblySymbolSource { internal VL.Lang.Platforms.Roslyn.CompiledSymbols get_CompiledSymbols() { ... } }
VL.Lang.Platforms.Roslyn.SymbolSourceProvider { public virtual VL.Lang.Symbols.ISymbolSource GetSymbolSource(string location) { ... } }
VL.Lang.Symbols.DocSymbols+DependencySymbol+<GetReferencesCore>d__29 { private virtual bool MoveNext() { ... } }
System.Collections.Generic.LargeArrayBuilder`1 { public void AddRange(System.Collections.Generic.IEnumerable<> items) { ... } }
System.Collections.Generic.EnumerableHelpers { internal static T[] ToArray(System.Collections.Generic.IEnumerable<> source) { ... } }
System.Collections.Immutable.ImmutableArray { public static System.Collections.Immutable.ImmutableArray<> CreateRange(System.Collections.Generic.IEnumerable<> items) { ... } }
VL.Model.InterlockedHelper { public static System.Collections.Immutable.ImmutableArray<> Init(System.Collections.Immutable.ImmutableArray<>& this, System.Collections.Generic.IEnumerable<> values) { ... } }
VL.Lang.Symbols.DocSymbols+DependencySymbol { public virtual System.Collections.Immutable.ImmutableArray<VL.Lang.Symbols.ISymbolSource> get_References() { ... } }
VL.Lang.Symbols.PreCompilation { internal VL.Lang.Helper.Graph<uint, VL.Lang.Symbols.DocSymbols> BuildDocumentGraph(bool skipPreCompiled, bool introduceBackedges) { ... } }
VL.Lang.Symbols.PreCompilation+<>c__DisplayClass19_0 { internal System.Collections.Generic.IEnumerable<VL.Lang.Symbols.IProjectSymbol> <Initialize>g__CreateAdhocProjects|14() { ... } }
VL.Lang.Symbols.PreCompilation { private void Initialize(VL.Lang.Symbols.PreCompilation previousCompilation, System.Threading.CancellationToken token, System.IProgress<VL.Model.LoadMessage> progress) { ... } }
VL.Lang.Symbols.PreCompilation { internal static VL.Lang.Symbols.PreCompilation Create(VL.Lang.Symbols.IPlatform platform, VL.Model.Internal.Solution solution, VL.Lang.Symbols.PreCompilation previous, VL.Model.CompileOptions options, System.Threading.CancellationToken token, System.IProgress<VL.Model.LoadMessage> progress) { ... } }
VL.Lang.Symbols.PreCompilation { internal VL.Lang.Symbols.PreCompilation WithSolution(VL.Model.Internal.Solution value, VL.Model.CompileOptions options, System.Threading.CancellationToken token, System.IProgress<VL.Model.LoadMessage> progress) { ... } }
VL.Lang.Symbols.PreCompilation { public VL.Lang.Symbols.PreCompilation WithSolution(VL.Model.Solution value, VL.Model.CompileOptions options, System.Threading.CancellationToken token, System.IProgress<VL.Model.LoadMessage> progress) { ... } }
VL.Model.VLSession+<>c__DisplayClass194_0 { internal VL.Lang.Symbols.PreCompilation <PrepareSolutionWithFreshSymbolsAsync>b__0() { ... } }
System.Threading.Tasks.Task`1 { internal virtual void InnerInvoke() { ... } }
System.Threading.Tasks.Task+<>c { internal void <.cctor>b__272_0(object obj) { ... } }
System.Threading.ExecutionContext { internal static void RunFromThreadPoolDispatchLoop(System.Threading.Thread threadPoolThread, System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) { ... } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } }
System.Threading.ExecutionContext { internal static void RunFromThreadPoolDispatchLoop(System.Threading.Thread threadPoolThread, System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) { ... } }
System.Threading.Tasks.Task { private void ExecuteWithThreadLocal(System.Threading.Tasks.Task& currentTaskSlot, System.Threading.Thread threadPoolThread) { ... } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { ... } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) { ... } }
System.Runtime.CompilerServices.TaskAwaiter`1 { public TResult GetResult() { ... } }
VL.Model.VLSession+<PrepareSolutionWithFreshSymbolsAsync>d__194 { private virtual void MoveNext() { ... } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { ... } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) { ... } }
System.Runtime.CompilerServices.TaskAwaiter`1 { public TResult GetResult() { ... } }
VL.Model.VLSession+<UpdateCompilationAsync>d__192 { private virtual void MoveNext() { ... } }