Bonjour, d’abord, je sais que des questions assez similaires ont déjà été posées, mais elles sont maintenant obsolètes. J’utilise Visual Studio 2015 RTM et ASP.NET 5 beta 6.
J'essaie d'ajouter une référence à un projet de bibliothèque de classe normal (c'est-à-dire pas vnext) à mon application Web vnext. Si je suis ces étapes:
Créer un nouveau projet d'application Web
Supprimez le cadre "dnxcore50" de project.json
Ajouter un nouveau projet pour une bibliothèque de classes normale
Déplacez manuellement le projet de bibliothèque de classes dans le dossier/src (sinon, l'erreur "La dépendance MyClassLibrary1>> 1.0.0- * n'a pas pu être résolue.")
Ajouter une référence à cette bibliothèque de classes
Maintenant, cela fonctionne bien, mais si j'essaie d'ajouter "à l'aide de MyClassLibrary1", cela signifie que MyClassLibrary1 n'existe pas dans le contexte actuel.
Si je modifie ensuite la bibliothèque de classes pour cibler le profil du client .NET 4 (par défaut, il était de 4,6), il fonctionne correctement, mais .NET 4 complet ou 4.5 ne fonctionne pas. J'ai besoin que ce soit 4.5 ou supérieur car je dois faire référence à différents paquets qui en ont besoin. Idéalement, tout viserait seulement 4.6.
Ceci est mon fichier project.json:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-WebApplication2-6767111e-0eba-42a4-9d68-4b6c20767518",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.SqlServer": "7.0.0-beta6",
"EntityFramework.Commands": "7.0.0-beta6",
"Microsoft.AspNet.Mvc": "6.0.0-beta6",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
"Microsoft.Framework.Logging": "1.0.0-beta6",
"Microsoft.Framework.Logging.Console": "1.0.0-beta6",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta6"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": {
"dependencies": {
"MyClassLibrary1": "1.0.0-*"
}
}
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
Et mon fichier global.json:
{
"projects": [
"src",
"test",
"wrap"
],
"sdk": {
"version": "1.0.0-beta6"
}
}
Voici comment je l'ai fait avec beta6 (UPDATE: Il est toujours valide pour la RC1 UPDATE 1).
Cela ajoutera une entrée de référence à votre fichier project.json . En coulisse, la dll est copiée dans le répertoire/lib de votre solution et dans un "wrapper project" avec uniquement un projet. Le fichier json est créé dans le dossier/wrap. Le projet de wrapper est documenté ici (pas assez bien cependant): https://github.com/aspnet/Home/wiki/Project.json-file#bin-syntax-wrapping-a-dll
C'est tout! Je viens de tester ce scénario. J'espère que cela t'aides.
Si quelqu'un d'autre a des problèmes avec cette erreur particulière, la clé consiste à ajouter la référence en "parcourant" le fichier lors de l'ajout de la référence, sans utiliser l'onglet "projet".
Cela ne semble pas stocker le chemin, mais ajoute la référence à project.json comme d'habitude. De toute évidence, un bug (beta7) au moment d'écrire ceci.
Voici comment je l'ai fait dans ASPT.NET 5 RC 1 Update 1:
Ouvrez project.json
, dans le noeud "frameworks":
, supprimez la ligne "dnxcore50": { }
(JSON n'autorise pas les commentaires). Lorsque vous enregistrez le fichier json, la référence DNX Core 5
doit être supprimée immédiatement.
Construisez le projet. Il devrait construire avec succès.
Remettez "dnxcore50": { }
. Cela ne ramène pas DNX 5 Core.
Ces réponses m'ont vraiment aidé à comprendre cela. Dans mon cas, le nettoyage du dossier "wrap" de la solution a résolu les erreurs de construction. J'avais renommé des bibliothèques de classes et les anciennes étaient toujours là. Suppression des anciens projets et mise à jour des fichiers project.json dans les projets existants ont fait l'affaire. Assurez-vous que les dépendances dans les fichiers project.json respectent les projets appropriés.
Voici un exemple:
"dependencies": {
"DomainRepository": "1.0.0-*",
"Domain": "1.0.0-*",
"DomainContract": "1.0.0-*"
}
Pour ajouter un projet .NET normal dans la version supérieure à la version 4.5.1, supprimez simplement dnxcore et renommez dnx451 en dnx461
Ceci est un bogue actuellement ouvert. Voici le lien pour que vous puissiez voir quand il ferme: https://github.com/aspnet/Tooling/issues/245