I've been trying to load a blazor app in a regular .net core 5 app but keep getting the following exceptions whenever I try to load the plugin:
System.Reflection.ReflectionTypeLoadException: 'Unable to load one or more of the requested types.
Could not load file or assembly 'Microsoft.AspNetCore.Components, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
I created a standard blazor application called BlazorApp and build it as a Library. I copied over all the files from the BlazorApp bin/ folder to a folder called plugins/BlazorApp/ in my HostApp bin/ folder.
The following HostApp program demonstrates my error:
static void Main(string[] args)
{
var pluginsDir = Path.Combine(AppContext.BaseDirectory, "plugins");
var loaders = new List<PluginLoader>();
foreach (var dir in Directory.GetDirectories(pluginsDir))
{
var dirName = Path.GetFileName(dir);
var pluginDll = Path.Combine(dir, dirName + ".dll");
if (File.Exists(pluginDll))
{
var loader = PluginLoader.CreateFromAssemblyFile(
pluginDll,
sharedTypes:new Type[]{});
loaders.Add(loader);
}
}
// Create an instance of plugin types
foreach (var loader in loaders)
{
foreach (var pluginType in loader
.LoadDefaultAssembly()
.GetTypes()
.Where(t => t.Name.Equals("Program")))
{
var program = pluginType.Assembly.DefinedTypes.FirstOrDefault(f => f.Name.Equals("Program"));
program.GetDeclaredMethod("Main")?.Invoke(null, new string[0]);
}
}
}
So what am I missing here? When I build the BlazorApp as a regular executable, it runs fine, like it should do. When I try to inspect the executable using ILSpy, it gives me the same error when trying to open the referenced assembly like AspNetCore.Components, which isnt in the BlazorApp bin folder either. So somewhere the executable is able to find it whereas the plugin loader is not.
Due to restrictions I am not able to include AspNetCore in my regular .net5 project but figured as they're both targeting .net 5 as framework it should work, but apparently not.
Hello,
I've been trying to load a blazor app in a regular .net core 5 app but keep getting the following exceptions whenever I try to load the plugin:
I created a standard blazor application called BlazorApp and build it as a Library. I copied over all the files from the BlazorApp
bin/
folder to a folder calledplugins/BlazorApp/
in my HostAppbin/
folder.The following HostApp program demonstrates my error:
So what am I missing here? When I build the BlazorApp as a regular executable, it runs fine, like it should do. When I try to inspect the executable using ILSpy, it gives me the same error when trying to open the referenced assembly like
AspNetCore.Components
, which isnt in the BlazorApp bin folder either. So somewhere the executable is able to find it whereas the plugin loader is not.Due to restrictions I am not able to include AspNetCore in my regular .net5 project but figured as they're both targeting .net 5 as framework it should work, but apparently not.