2017-04-18 5 views
0

Ich habe eine Core Class Library, die benutzerdefinierte Tag-Hilfsprogramme enthält. Ich möchte dies als Referenz in einer Core Web Application hinzufügen.Referenzieren einer ASP.NET Core-Klassenbibliothek

Ich mit der rechten Maustaste auf das Projekt in Visual Studio, wählt Referenz hinzufügen und durchsucht den Ordner und wählen Sie die DLL.

Aber wenn ich versuche @addTagHelper zu verwenden, erhalte ich:

Cannot resolve TagHelper containing assembly 'LC_PUBLIC_CORE'. Error: Could not load file or assembly 'LC_PUBLIC_CORE, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.

Mein Code:

LC_Public (Klassenbibliothek)

namespace LC_PUBLIC_CORE.TagHelpers 
{ 
    [HtmlTargetElement("LC_meta")] 
    public class MetaTagHelper : TagHelper 
    { 
     private IHostingEnvironment _env; 

     [HtmlAttributeName("filename")] 
     public string Filename { get; set; } = "default.txt"; 

     public MetaTagHelper(IHostingEnvironment env) 
     { 
      _env = env; 
     } 

     public override void Process(TagHelperContext context, TagHelperOutput output) 
     { 
      output.Content.SetContent(System.IO.File.ReadAllText(System.IO.Path.Combine(_env.WebRootPath, "META", this.Filename))); 
     } 
    } 
} 

ASP_NET_CORE_Standard (Web Application) - _ViewImports.cshtml

@using ASP_NET_CORE_Standard 
@using LC_PUBLIC_CORE 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 
@addTagHelper *, LC_PUBLIC_CORE 

Muss ich zusätzlichen Code hinzufügen?

+0

Ihre letzte @addTagHelper Linie ein anderes verwendet (und veraltet) Format als die zweiten letzten. Auch die Wildcard wird komplett anders genutzt. Der erste Parameter von @addTagHelper ist für den Namen der Tag-Helper-Klasse ('*' für alle), der zweite ist der Namespace, in dem sich die Tag-Helfer befinden – Tseng

+0

@tseng Ich habe das Format geändert, aber immer noch den gleichen Fehler. Wenn ich LC_PUBLIC_CORE.TagHelpers verwende, bekomme ich "** kann TagHelper mit Assembly nicht auflösen 'LC_PUBLIC_CORE.TagHelpers' **", Definition von Copy Local = true auf der Referenz hat auch nichts gemacht – TheRuler

+0

Haben Sie Ihre Lösung nach dem Ändern neu erstellt? Einige Sachen werden nicht sofort abgeholt (nämlich Änderungen am EF-Kernmodell und bestimmte Razor-Aspekte, d. H. Für ein Gerüst) – Tseng

Antwort

0

Ich habe es funktioniert, indem Sie eine neue Lösung erstellt und beide Projekte der Lösung hinzugefügt. Dann wurde ein Verweis auf das LC_PUBLIC_CORE-Projekt in ASP_NET_CORE_Standard hinzugefügt.

_ViewImports.cshtml:

@using ASP_NET_CORE_Standard 
@using LC_PUBLIC_CORE 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 
@addTagHelper *, LC_PUBLIC_CORE 
Verwandte Themen