webentwicklung-frage-antwort-db.com.de

"Der Typ- oder Namespace-Name 'Route' wurde mit" Attribut-Routing "nicht gefunden

Versuchen Sie einfach, etwas Code von einem Arbeitsprojekt zu einem anderen zu spleißen. Das Projekt "from" verwendet "Attribut-Routing", bei dem Sie [Route(…)]-Anweisungen in die Web-API-Controller-Module einbetten, um anzugeben, welche HTTP-Nachricht an welche Serviceroutine weitergeleitet werden soll. 

Funktioniert gut im "Von" -Projekt, aber im "Bis" -Projekt bekomme ich den Build-Fehler "Der Typ- oder Namespace-Name 'Route' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assemblyreferenz?)"

Ich habe versucht, im Wesentlichen alle using-Anweisungen aus dem "from" -Projekt in das "to" -Projekt zu kopieren, aber das hat keine offensichtlichen Auswirkungen. Keine der MS-Dokumentation legt nahe, dass ein NuGet-Paket erforderlich ist (oder sogar eine using-Anweisung). Beide Projekte sind angeblich ASP.NET MVC 4.

(Und ja, ich habe WebApiConfig.cs mit der config.MapHttpAttributeRoutes();-Anweisung aktualisiert.)

Irgendwelche Ideen??

11
Hot Licks

Das Attribut-Routing ist in ASP.NET MVC 5 oder höher und in der ASP.NET-Web-API 2 nativ.

Es gibt jedoch ein Projekt, das die Verwendung von Attributrouting in früheren Versionen von ASP.NET MVC und Web-API ermöglicht. Sie sollten diese Seite sorgfältig lesen.

Wie Sie auf der verlinkten Seite sehen können, ist dieses Projekt als NuGet-Paket verfügbar, sodass es folgendermaßen installiert werden kann:

  • Install-Package AttributeRouting (für MVC)
  • Install-Package AttributeRouting.WebApi (für Web-API)
  • Install-Package AttributeRouting.WebApi.Hosted (für selbst gehostete Web-API)

Bitte beachten Sie, dass die Namespaces für das Attributrouting für jede Version sowie für MVC und Web-API unterschiedlich sind. Sie müssen also die im installierten Paket enthaltene DLL durchsuchen, um den richtigen Namespace zu ermitteln, und Ihre using entsprechend ändern. Zum Beispiel:

using AttributeRouting.Web.Http;
16
JotaBe

Dieser Kommentar von Vedran Mandić hat das Problem für mich gelöst. Ich poste es hier neu, weil ich denke, es sollte die Antwort (oder zumindest eine Antwort) sein.

Ich habe ein 'Update-Paket Microsoft.AspNet.WebApi.WebHost -reinstall' .__ erstellt. und es hat funktioniert. Witzigerweise geschieht dies, nachdem die neueste Version von .__ heruntergeladen wurde. verschiedene PCs von TFS. Ich denke, das passiert wegen Nuget-Paketen funktioniert nicht ordnungsgemäß mit dem Versionierungssystem

27
ClearCloud8

In meinem Fall gab es im Web-API-Projekt zwei Verweise:

using System.Web.Http;
using System.Web.Mvc; 

Sobald ich System.Web.Mvc entfernte, war der Fehler verschwunden. 

4
Dipendu Paul

Wenn Projekte von mehreren Lösungen gemeinsam genutzt werden, muss die Referenz der Bibliotheken, die mit Nuget heruntergeladen werden, manuell in .csproj unter dem lösungsbezogenen Pfad konfiguriert werden.

Beispielsweise sollte log4net wie folgt konfiguriert sein:

<Reference Include="log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
   <HintPath>$(SolutionDir)\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
   <Private>True</Private>
</Reference>
0
Panos Roditakis