asp.net

asp.net - El tipo ''System.Object'' está definido en un ensamblaje al que no se hace referencia



(6)

Es posible que otros archivos de la carpeta .NET Facades también puedan causar el mismo problema, y ​​que se solucionen utilizando el mismo enfoque anterior para cada archivo en cuestión.

Puede encontrar los archivos en cuestión en la siguiente carpeta (según el tiempo de ejecución de .NET objetivo), ejemplos:

.NET 4.5.1 – {ProgramFilesFolder x86 folder} /Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5.1/Facades .NET 4.5 – {ProgramFilesFolder x86 folder} /Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5/Facades

Extraído de http://www.lyalin.com/2014/04/25/the-type-system-object-is-defined-in-an-assembly-that-is-not-reference-mvc-pcl-issue/

Instalé un paquete de nugets de compresión de la API web de Microsoft ASP.NET en mi proyecto y agregué una línea a WebApiconfig dentro del método de registro como se muestra en este enlace https://www.nuget.org/packages/Microsoft.AspNet.WebApi.MessageHandlers.Compression/

GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new CompressionHandler(new GZipCompressor(), new DeflateCompressor()));

También se agregó el siguiente código al archivo web.config

<compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation>

Pero estoy recibiendo un error

Error 1 El tipo ''System.Object'' está definido en un ensamblaje al que no se hace referencia. Debe agregar una referencia al ensamblado ''System.Runtime, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a''. D: .... / App_Start / WebApiConfig.cs

El compilador se queja de la clase GlobalConfiguration con el error anterior. Estoy usando> NET Framework 4.5


Agregar <Reference Include="System.Runtime" /> en el archivo csproj justo antes de que <Reference Include="System.Runtime.Serialization" /> haya resuelto mi problema.


Esto fue un poco complicado porque también intenté agregar la referencia del ensamblado al archivo raíz Web.config del proyecto, lo cual no ayudó en mi caso. Después de eso, hice lo mismo para el archivo Web.config que se encuentra en la carpeta Vistas de mi proyecto ASP.NET MVC: Views / Web.config

<system.web> <compilation> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation> </system.web>

Lo anterior funcionó.

De hecho, ya tenía una referencia de ensamblaje System.Web.Mvc allí antes, así que aquí está la lista completa para mi proyecto ASP.NET MVC.

<system.web> <compilation> <assemblies> <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation> </system.web>


La instalación y eliminación de System.ValueTuple a través de Nuget dejó un archivo System.ValueTyple.dll en mi carpeta bin. Borrarlo me solucionó el problema.


Recibí este mismo error y lo resolví haciendo 2 cosas.

Fondo:

Estoy creando una aplicación ASP.Net de prueba simple para tratar de trabajar con OAuth2.0 de la API de Google. Utilicé "nuget" para instalar la biblioteca Google.Apis.Calendar.v3 (v1.13.1.509) , e introdujo muchas otras dlls de las que depende.

El error:

Al compilar un proyecto ASP.Net aparentemente simple dirigido a "Framework 4.5" en Visual Studio 2015 para Web (Express). El error se mostró de 2 maneras:

Originalmente compilé el código usando el comando Construir Ctrl+F5 . Luego obtuve un error de compilación, pero sin una entrada en la pestaña "Error" que normalmente apuntaría a una línea de código fuente. (El proyecto simplemente dejaría de construir). La salida fue:

------ Build started: Project: oauth2.pylogen.com, Configuration: Debug Any CPU ------ Validating Web Site Building directory ''/App_Code/''. E:/Projects/oauth2.pylogen.com/App_Code/Google.Api.Pylogen/FlowMetadata.cs(26,13): error CS0012: The type ''System.Object'' is defined in an assembly that is not referenced. You must add a reference to assembly ''System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a''. Validation Complete ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Luego procedí instalando el paquete de desarrollador dotNet Framework 4.6.1 (la versión más reciente que no es una vista previa).

Luego reinicié VS 2015 para Web y conseguí compilar nuevamente. Esta vez obtuve una entrada en la pestaña "Error", que apuntaba a una línea de origen:

flowInit.Scopes = new string[] { Google.Apis.Calendar.v3.CalendarService.Scope.Calendar };

Cuando comenté esta línea, la compilación del proyecto. Casi no podía hacer nada con esta línea, ¡pero solo quería mostrar la oscuridad del error!

Soluciones:

Después de instalar Framework 4.6.1 Developer Pack . También agregué esta línea a Web.Config:

<compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation>

Después de esto mi proyecto se construye completamente. Supongo que Google se está refiriendo a System.Runtime.dll anterior (aunque el detalle de su paquete Nuget muestra que el marco de destino es 4.5).


Solucioné este problema actualizando el compilador de C # a Roslyn. Para hacerlo, vaya a Project : Enable latest C# and VB features for ASP.NET Project .