Saltar al contenido

No se pueden cargar ensamblajes para la biblioteca .Net Standard (System.Text.Json)

Te doy la bienvenida a nuestro espacio, en este sitio encontrarás la respuesta de lo que buscabas.

Solución:

El problema al que se enfrenta es que su biblioteca tiene como objetivo .NET Standard, que no es un marco ejecutable, por lo que a veces tiene problemas al intentar cargarlo usando modelos como el que hace Powershell. Voy a tratar de explicar un poco más lo que está pasando.

.NET Standard es simplemente una especificación de área de superficie de API, por lo que básicamente es solo un conjunto de API que se garantizará que estarán presentes y podrán ejecutarse en cualquier marco ejecutable que implemente esa versión de .NET Standard. Lo que esto significa es que si tiene una biblioteca que apunta a .NET Standard, no hay una forma real de publicar esa biblioteca con todas sus dependencias de manera que se garantice que se ejecutará en cualquier marco ejecutable, porque cada marco ejecutable puede requerir dependencias adicionales. para que su biblioteca se cargue correctamente. Al hacer referencia a una biblioteca .NET Standard desde una aplicación de consola (ya sea a través de la referencia del proyecto o a través de un paquete NuGet), la aplicación de la consola sabrá a qué marco ejecutable se dirige, por lo que podrá obtener el conjunto correcto de dependencias que necesitará su biblioteca. en tiempo de ejecución, pero el problema con su escenario es que esta aplicación de consola realmente no existe, ya que la está cargando desde PowerShell (que en cierto sentido es básicamente la aplicación de consola). Debido a todo esto, para que su biblioteca se cargue con éxito en el tiempo de ejecución, tendrá que realizar el trabajo que haría una aplicación de consola que hace referencia a su biblioteca, y elegir las referencias correctas para llevar su biblioteca dependiendo del tiempo de ejecución que será cargándolo. Para powershell, existen básicamente dos tiempos de ejecución posibles (.NET Core para powershell core y .NET Framework para Powershell).

La forma más fácil de resolver su problema es simplemente crear una aplicación de consola ficticia: desde el símbolo del sistema, simplemente ejecute dotnet new console -n dummyConsoleApp, establezca el marco de destino en netcoreapp2.0 (suponiendo que está ejecutando en powershell core, si en cambio está ejecutando en powershell completo, configúrelo en net46). Luego agregue una referencia de proyecto a su biblioteca como y luego ejecutar desde el símbolo del sistema dotnet publish -r win-x64 que debería crear un directorio de publicación dentro de su carpeta bin que tendrá todos los ensamblajes que usará su aplicación en tiempo de ejecución. Después de eso, intente cargar su File.dll nuevamente, pero esta vez desde esa carpeta de publicación, y debería tener éxito esta vez, ya que esa carpeta de publicación tendrá todas las dependencias correctas que necesitará para el tiempo de ejecución en el que se ejecuta PowerShell. Si por alguna razón esto no funciona para usted, no dude en registrar un problema al respecto en https://github.com/dotnet/runtime repo y etiquéteme (@joperezr) y con gusto lo ayudaré a diagnosticar y arreglar el problema

Recuerda que tienes la capacidad de esclarecer si atinaste tu atolladero .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *