El proyecto es una aplicación web ASP.NET MVC dirigida a .NET Framework 4.6.1.
De repente (se actualizaron algunos paquetes de NuGet) comencé a recibir el siguiente error durante el tiempo de ejecución:
CS0012: El tipo 'System.Object' se define en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'.
En mi vista principal Index.cshtml
, en una línea donde hago uso de@Html.ActionLink
Tengo .NET Core SDK 2.0 y .NET Framework 4.7.1 instalados en mi máquina, pero no quiero incluir una referencia. Esta es solo una aplicación web .NET Framework, está alojada en Windows IIS donde el marco instalado es 4.6.1, no hay NET Core instalado en el servidor.
Entonces, ¿por qué pide agregar una referencia a netstandard
? ¿Cómo puedo solucionarlo sin hacer referencia netstandard
a Windows .NET Framework 4.6.1 completo?
Revisé una confirmación anterior que funcionó bien y todavía recibo este error. Por lo tanto, no está relacionado con la actualización de los paquetes NuGet. Parece ser algo en mi máquina de desarrollo local.
Si publica la aplicación en un directorio y la ejecuta con IIS, funciona.
paquetes.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net46" />
<package id="BundleTransformer.Core" version="1.9.69" targetFramework="net46" />
<package id="BundleTransformer.Handlebars" version="1.9.73" targetFramework="net46" />
<package id="BundleTransformer.Less" version="1.9.69" targetFramework="net46" />
<package id="BundleTransformer.Yui" version="1.9.52" targetFramework="net46" />
<package id="Dapper" version="1.42" targetFramework="net46" />
<package id="EcmaScript.Net" version="1.0.1.0" targetFramework="net46" />
<package id="EntityFramework" version="6.0.0" targetFramework="net46" />
<package id="Glimpse" version="1.8.6" targetFramework="net46" />
<package id="Glimpse.AspNet" version="1.9.2" targetFramework="net46" />
<package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net46" />
<package id="JavaScriptEngineSwitcher.Core" version="1.2.4" targetFramework="net46" />
<package id="JavaScriptEngineSwitcher.V8" version="1.3.0" targetFramework="net46" />
<package id="jQuery" version="2.1.3" targetFramework="net46" />
<package id="jQuery.Validation" version="1.13.1" targetFramework="net46" />
<package id="LowercaseDashedRoute" version="1.0.14" targetFramework="net46" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net46" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
<package id="Moment.js" version="2.10.2" targetFramework="net46" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
<package id="NWebsec" version="5.1.1" targetFramework="net46" />
<package id="NWebsec.Core" version="2.1.0" targetFramework="net46" />
<package id="NWebsec.Mvc" version="5.1.1" targetFramework="net46" />
<package id="Owin" version="1.0" targetFramework="net46" />
<package id="Respond" version="1.4.2" targetFramework="net46" />
<package id="Sendgrid" version="6.3.0" targetFramework="net46" />
<package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net46" />
<package id="Serilog" version="2.6.0" targetFramework="net46" />
<package id="Serilog.Enrichers.Environment" version="2.1.2" targetFramework="net46" />
<package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net46" />
<package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net46" />
<package id="Serilog.Sinks.Sentry" version="2.1.4" targetFramework="net46" />
<package id="SerilogWeb.Classic" version="2.1.17" targetFramework="net46" />
<package id="SharpRaven" version="2.2.0" targetFramework="net46" />
<package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
<package id="Twitter.Bootstrap.Less" version="3.3.4" targetFramework="net46" />
<package id="WebActivatorEx" version="2.0.6" targetFramework="net46" />
<package id="WebGrease" version="1.6.0" targetFramework="net46" />
<package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net46" />
</packages>
Al publicar la aplicación usando VS2017 en el sistema de archivos, aparece la siguiente advertencia en el resultado:
El siguiente ensamblado tiene dependencias en una versión de .NET Framework que es superior a la de destino y puede que no se cargue correctamente durante el tiempo de ejecución, lo que provoca un error: netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51. Las dependencias son: System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089. Debe asegurarse de que el ensamblado dependiente sea correcto para el marco de destino o asegurarse de que el marco de destino al que se dirige sea el del ensamblado dependiente.
Pero no puedo encontrar nada en System.Transactions
. ¿Cómo puedo buscar qué lo hace referencia?
System.Data.SQLite.Core
paquete se basa en .NET Core (o .NET Standard, no busqué la fuente ni los documentos). Mire el mensaje de error al final de su archivo de proyecto.
packages\System.Data.SQLite.Core.1.0.108.0\lib
directorio y contiene una carpeta para cada versión de .NET Framework, incluida la 4.6, que es lo que estoy usando. No creo que ese sea el problema aquí.