Vous devez ajouter une référence à l'assembly 'netstandard, Version=2.0.0.0

Le projet est un ASP.NET MVC Web App ciblage de l' .NET Framework 4.6.1.

Tout d'un coup (certains packages NuGet ont été mis à niveau) j'ai commencé à avoir l'erreur suivante lors de l'exécution:

CS0012: Le type du Système".L'objet " est défini dans une assemblée 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 vue principale Index.cshtml, dans une ligne où je peux utiliser @Html.ActionLink

J'ai .NET SDK de Base 2.0 et .NET Framework 4.7.1 installé sur ma machine mais je ne veux pas d'inclure une référence à elle. C'est un .NET Framework web app seulement, il est hébergé sur IIS de Windows où il est installé, le cadre est 4.6.1, il n'y a pas de NET de Base installé sur le serveur.

Alors pourquoi est-il en demandant d'ajouter une référence à netstandard? Comment puis-je résoudre ce problème sans faire référence à netstandard mais la complète de Windows .NET Framework 4.6.1?

J'ai vérifié un précédent commit qui a bien fonctionné et je suis encore en train cette erreur. Il n'est donc pas liée à NuGet packages de mise à niveau. Semble être quelque chose sur mon dev local de la machine.

Si un publier l'application dans un répertoire et de l'exécuter avec IIS il fonctionne.

Lien vers .csproj gist

paquets.json

<?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 VS2017 pour le système de fichier, j'obtiens le message d'avertissement suivant dans la sortie:

L'assemblée suivante a des dépendances sur une version de l' .NET
Cadre supérieur à la cible et peuvent ne pas se charger correctement
au cours de l'exécution à l'origine un échec: netstandard, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. Les dépendances
sont: Système d'.Transactions, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089. Vous devriez s'assurer que les
dépendant de l'assemblage est correct pour le framework cible, ou de s'assurer que
le framework cible à qui vous vous adressez, c'est que des personnes dépendantes
de l'assemblée.

Mais je ne trouve rien sur System.Transactions. Comment puis-je rechercher ce que le référencement?

Ce que les packages NuGet utilisez-vous? Êtes-vous sûr que vous n'êtes pas référence à un ASP.NET Core?
VS2017 ne vous permet pas d'ajouter un paquet de ciblage d'un cadre différent que celui du projet est de mieux les cibler. Je l'ai désinstallé et réinstallé tous les paquets, mais l'erreur est la même. Je ne comprends pas pourquoi il se produit et même pourquoi au cours de l'exécution...
Le System.Data.SQLite.Core le forfait est basé sur .NET de Base (ou .NET Standard, je n'ai pas aller à la recherche de la source ou des documents). Regardez le message d'erreur à la fin de votre fichier de projet.
Pourquoi avez-vous dit est basé sur upn .NET de Base? Je suis à la recherche à la packages\System.Data.SQLite.Core.1.0.108.0\lib répertoire et il contient un dossier pour chaque version de l' .NET Framework, y compris 4.6 est ce que je suis en utilisant. Je ne pense pas que c'est la question ici.
Quand je suis face impossibles à résoudre les questions de ce genre, ce que je fais est de 1), notez soigneusement ce que sont la référence du projet (ou de sauver des .csproj quelque part), 2) supprimer les paquets.fichier de configuration, supprimer toutes les références externes (alternativement, vous pouvez écrire un nouveau projet à partir de zéro, seulement avec l'original de fichiers statiques .cs, etc.), 3) configurer VS Nuget pour l'utilisation de Paquet de Référence au lieu de legagy paquets.en mode config docs.microsoft.com/en-us/nuget/reference/... et 4) ajoutez tous besoin de références. La plupart du temps, ça fonctionne et je n'ai aucune idée de la raison de l'échec avant.

OriginalL'auteur emzero | 2018-04-19