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.
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?
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
Vous devez vous connecter pour publier un commentaire.
Je pense que la solution pourrait être cette question sur GitHub:
Je me rends compte que vous utilisez 4.6.1 mais le choix de .NET 4.7.1 est important, car les anciennes versions Framework ne sont pas entièrement compatibles avec .NET Standard 2.0.
Je le sais par expérience douloureuse, lorsque j'ai présenté .NET bibliothèques Standard, j'ai eu beaucoup de problèmes avec les packages NUGET et les références de rupture. L'autre changement, vous devez tenir compte est la mise à niveau vers PackageReferences au lieu de
package.config
fichiers.Voir ce guide et vous pouvez également un outil d'aide à la mise à niveau. Il ne nécessite pas une fin VS 15.7 version.
Précisément ce qui est nécessaire lors de la mise à niveau vers v4.7.2 (non core app) et a obtenu une exception comme suit: "Le type" DateTime " 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'.
Est-ce à également ajouté les références dans le fichier csproj, ou qu'il est uniquement nécessaire dans le web.config?
Cela a fonctionné pour moi.
Cela devrait être la réponse
OriginalL'auteur Quango
La modification manuelle de l' .csproj fichier et l'ajout de la référence ci-dessous a fonctionné pour moi.
Merci à Fahad Alshaya qui a suggéré qu'il ici.
OriginalL'auteur kamilk
J'ai couru dans ce avant et essayer un certain nombre de choses a résolu pour moi:
Aussi, si ce n'est une .net de base application qui s'exécute sur le plein cadre, j'ai trouvé, vous devez inclure une mondiale.json fichier à la racine de votre projet et de le pointer vers le SDK que vous souhaitez utiliser pour ce projet:
OriginalL'auteur Kyle Dodge
Bien que c'est un vieux thread, j'ai eu le même problème aujourd'hui, la semaine dernière j'ai mis à jour certains paquets NuGet et bien que le MVC site a fonctionné sur ma machine de dev, lorsque j'ai publié le serveur de test, il a échoué.
J'ai lu de nombreux posts, mais aucune n'a fonctionné. J'ai enfin comparé les DLL dans mon local de la corbeille à ceux du serveur de test et a constaté que la netstandard.dll n'a pas été transférée, une fois téléchargé du site web a fonctionné, je ne sais pas pourquoi VS2017 web deploy ne pas publier la DLL.
Juste quelque chose à regarder dehors pour dans le cas où aucun de ces travaux pour vous.
OriginalL'auteur George Phillipson
Pourrait avoir todo avec l'un de ces:
Habituellement Le Système.Les Transactions ne fait pas partie de vos références, essayez de l'ajouter dans vos références par: clic droit sur votre références, si vous utilisez une Application Web ou dans votre Projet si vous utilisez le Site Web. trouver le Système.Les Transactions dans le .NET des références. Vous devriez trouver le Système.Les Transactions dans vos références.
OriginalL'auteur ivw
Suppression Bin et Obj dossiers a fonctionné pour moi.
OriginalL'auteur Vijay Verma
Cette question est basée sur votre version de visual studio et Windows, vous pouvez suivre les étapes suivantes:-
déclassés votre PCL par la commande suivante
OriginalL'auteur Rakendu Shukla