Библиотека классов (Standard 2.1 или Core 3.1): не удалось найти имя пространства имен 'IWebHostEnvironment' - PullRequest
2 голосов
/ 11 февраля 2020
  1. Новый проект, Библиотека классов (. NET Стандарт)
  2. В проекте свойства изменены с 2,0 до 2,1
  3. Изменен класс1:
public class Class1
{
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

    }
}
Исправлено (правильно?) Красный волнистый объект IApplicationBuilder: Однако проект библиотеки не компилируется: «Ошибка CS0246 Не удалось найти имя типа или пространства имен« IWebHostEnvironment »...»

Какие ссылки следует добавить для этих двух интерфейсов, пожалуйста? Или вы должны только когда-либо использовать эти интерфейсы только внутри проекта веб-сайта?

Также тот же результат с. NET Core 3.1 Class Library. Visual Studio 16.4.4

Любая помощь высоко ценится.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Кажется, что это работает в. NET файле проекта библиотеки классов Core 3.1, но не в. NET стандартном файле 2.1:

Я добавил в файл проекта следующее:

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

Теперь сборка завершается успешно:

public class Class1
{
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

    }
}

Есть ли способ для. NET Стандартного проекта библиотеки классов 2.1 поддержать новый IWebHostEnvironment?

1 голос
/ 11 февраля 2020

Возможно, вы захотите следовать этому руководству (для миграции с 2.2 на 3.0)

https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio

Это объясняет, что произошло https://github.com/dotnet/AspNetCore/issues/7749

Обновление:

Net Стандарт

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
<!-- Should work with either if you have sdks installed and do restore -->
<!--<TargetFramework>netstandard2.1</TargetFramework>-->
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />    
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.1" />
  </ItemGroup>

</Project>

С файлом класса

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

namespace ClassLibrary2
{
    public class Class1
    {
        public void Configure(IApplicationBuilder app, IHostEnvironment env)
        {

        }
    }
}

Net Ядро 3.1

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
</Project>

С файлом класса

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;

namespace ClassLibrary3
{
    public class Class1
    {
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {

        }
    }
}

...