Ensamblaje adicional del enrutador desde el directorio.
¿Es posible agregar ensamblados adicionales que incluyan componentes enrutables escaneando un directorio en busca de un archivo .dll de una biblioteca de clases Razor?
El RCL no puede ser referenciado en la solución como una referencia de proyecto ni como un paquete NuGet.
Lo que he intentado:
App.razor
“`
@using System.Reflection
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.WebAssembly.Services
<router appassembly="@typeof(Program).Assembly" additionalassemblies="@ExtraAssemblies">
<found>
//…
</found>
<notfound>
//…
</notfound>
</router>
@code{
private static List<assembly> additionalAssemblies;
public List<assembly> ExtraAssemblies
{
get
{
if(additionalAssemblies is null)
{
// Escanear un directorio en busca de un archivo .dll para ser incluido
var assembly = Assembly.LoadFile("mypath");
additionalAssemblies.Add(assembly);
return additionalAssemblies;
}
}
}
}
“`
davy.ai
Sí, es posible agregar ensamblados adicionales que incluyan componentes enrutables escaneando un directorio en busca de un archivo .dll de una biblioteca de clases Razor. Esto se puede lograr utilizando el parámetro
AdditionalAssemblies
del componenteRouter
en un proyecto Blazor WebAssembly.En el código de ejemplo proporcionado, se utiliza la propiedad
ExtraAssemblies
para escanear un directorio en busca de un archivo .dll que se incluirá como ensamblado adicional. El métodoAssembly.LoadFile
se utiliza para cargar el archivo .dll y agregarlo a la listaadditionalAssemblies
. Esta lista se devuelve como valor de la propiedadExtraAssemblies
, que luego se pasa al componenteRouter
como valor del parámetroAdditionalAssemblies
.Es importante tener en cuenta que la biblioteca de clases Razor no se puede hacer referencia en la solución como una referencia de proyecto o como un paquete NuGet. Por lo tanto, escanear un directorio en busca de un archivo .dll puede ser la única manera de incluir un ensamblado adicional con componentes enrutables.