Создание TagHelpers в библиотеке классов для ASP.NET Core 3 - PullRequest
0 голосов
/ 24 октября 2019

Как создать TagHelper -классы в отдельной библиотеке классов с изменениями в ASP.NET Core 3?

В ASP.NET Core 1.x и 2.x, вы можете ссылаться только на NuGet-пакет Microsoft.AspNetCore.Razor, чтобы позволить вашим классам наследоваться от Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.

В ASP.NET Core 3.x, похоже, существует только один большой пакет с именем Microsoft.AspNetCore.App, который нельзя найти в NuGet .

Решение должно поддерживать использование содержащихся TagHelper -классов в как в ASP.NET Core 3, так и в более ранних версиях .

1 Ответ

1 голос
/ 25 октября 2019

Посмотрите на Миграция с ASP.NET Core 2.2 на 3.0 .

Это объясняет, что проекты, которые ссылаются только на Microsoft.NET.Sdk.Razor (например, ваша библиотека классов), должны добавить ссылку на Microsoft.AspNetCore.App. Однако это автоматически включается для проектов, нацеленных на Microsoft.NET.Sdk.Web (например, приложение MVC или WebAPI).

Цитата из раздела FrameworkReference (второй пункт относится к вашему проекту):

Функции ядра ASP.NET, которые были доступны через один из перечисленных выше пакетов, доступны как часть общей инфраструктуры Microsoft.AspNetCore.App. Общая структура - это набор сборок (DLL-файлов), которые устанавливаются на компьютере и включают в себя компонент среды выполнения и пакет таргетинга. Для получения дополнительной информации см. Общая платформа.

  • Проекты, нацеленные на Microsoft.NET.Sdk.Web SDK , неявно ссылающиеся на структуру Microsoft.AspNetCore.App. Никаких дополнительных ссылок для этих проектов не требуется:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
      </PropertyGroup>
      ...
    </Project>
    
  • Проекты, нацеленные на Microsoft.NET.Sdk или Microsoft.NET.Sdk.Razor SDK, должны добавить явный FrameworkReference кMicrosoft.AspNetCore.App:

    <Project Sdk="Microsoft.NET.Sdk.Razor">
      <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
      </ItemGroup>
      ...
    </Project>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...