web-dev-qa-db-fra.com

Problème lors de l'ajout d'une référence au projet de bibliothèque de classes dans ASP.NET 5 (Core)

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:

  1. Créer un nouveau projet d'application Web

  2. Supprimez le cadre "dnxcore50" de project.json

  3. Ajouter un nouveau projet pour une bibliothèque de classes normale

  4. 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.")

  5. 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"
  }
}
17
Martin Richards

Voici comment je l'ai fait avec beta6 (UPDATE: Il est toujours valide pour la RC1 UPDATE 1).

  1. Supprimez les frameworks => dnxcore de votre projet.json (vous ne pouvez pas le cibler de toute façon avec des bibliothèques de classes .net complètes)
  2. Dans votre projet cible, cliquez avec le bouton droit sur Références => Ajouter une référence.
  3. Naviguez et sélectionnez la DLL de référence que vous souhaitez ajouter.

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.

23
mbudnik

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.

15
JamesDill

Voici comment je l'ai fait dans ASPT.NET 5 RC 1 Update 1:

  1. Ajouter la référence du projet
  2. 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.

  3. Construisez le projet. Il devrait construire avec succès.

  4. Remettez "dnxcore50": { }. Cela ne ramène pas DNX 5 Core.

2
Jeson Martajaya

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-*"
  }
1
James

Pour ajouter un projet .NET normal dans la version supérieure à la version 4.5.1, supprimez simplement dnxcore et renommez dnx451 en dnx461

1
Adam Wyżgoł

Ceci est un bogue actuellement ouvert. Voici le lien pour que vous puissiez voir quand il ferme: https://github.com/aspnet/Tooling/issues/245

0
Kevin Johnsrude