Le projet est une application Web ASP.NET MVC ciblant le .NET Framework 4.6.1.
Tout à coup (certains packages NuGet ont été mis à niveau), j'ai commencé à recevoir l'erreur suivante pendant l'exécution:
CS0012: Le type 'System.Object' est défini dans un assembly qui n'est pas référencé. Vous devez ajouter une référence à l'assembly 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'.
Dans ma vision principale Index.cshtml
, dans une ligne où j'utilise@Html.ActionLink
J'ai .NET Core SDK 2.0 et .NET Framework 4.7.1 installés sur ma machine mais je ne souhaite pas y inclure de référence. Il s'agit d'une application Web .NET Framework uniquement, elle est hébergée sur Windows IIS où le framework installé est 4.6.1, aucun NET Core n'est installé sur le serveur.
Alors pourquoi demande-t-il d'ajouter une référence à netstandard
? Comment puis-je résoudre ce problème sans faire référence à netstandard
la version complète de Windows .NET Framework 4.6.1?
J'ai vérifié un commit précédent qui fonctionnait bien et j'obtiens toujours cette erreur. Ce n'est donc pas lié aux packages NuGet en cours de mise à niveau. Semble être quelque chose sur ma machine de développement locale.
Si vous publiez l'application dans un répertoire et l'exécutez avec IIS, cela fonctionne.
packages.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>
Lors de la publication de l'application à l'aide de VS2017 sur le système de fichiers, je reçois l'avertissement suivant dans la sortie:
L'assembly suivant a des dépendances sur une version du .NET Framework qui est supérieure à la cible et peut ne pas se charger correctement pendant l'exécution, provoquant un échec: netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51. Les dépendances sont: System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089. Vous devez soit vous assurer que l'assembly dépendant est correct pour l'infrastructure cible, soit vous assurer que l'infrastructure cible que vous adressez est celle de l'assembly dépendant.
Mais je ne trouve rien sur System.Transactions
. Comment puis-je rechercher ce qui le référence?
System.Data.SQLite.Core
package est basé sur .NET Core (ou .NET Standard, je n'ai pas cherché la source ou les documents). Regardez le message d'erreur à la toute fin de votre fichier projet.
packages\System.Data.SQLite.Core.1.0.108.0\lib
répertoire et il contient un dossier pour chaque version du .NET Framework, y compris 4.6 qui est ce que j'utilise. Je ne pense pas que ce soit le problème ici.