标签: .net-standard-2.1

项目“ClassLibrary1.csproj”针对“netstandard2.1”。它不能被以“.NETFramework,Version=v4.8”为目标的项目引用

我在目标中有一些类库项目netstandard2.1

当我在 target 中将其引用到我的 WPF 项目时.NET Framework v4.8,在构建时出现错误:

严重性代码描述项目文件行抑制状态错误项目“..\ClassLibrary1\ClassLibrary1.csproj”针对“netstandard2.1”。它不能被以“.NETFramework,Version=v4.8”为目标的项目引用。应用程序1

我能做什么?

更新:我读这个Q / A有关引用netcoreapp2.1和有关补充说答案有说服力netstandar2.1。但是我的图书馆已经在目标中了netstandard2.1

.net c# .net-standard .net-4.8 .net-standard-2.1

19
推荐指数
2
解决办法
1万
查看次数

.NET Standard 和 .NET Core 3.x 或 ASP.NET Core 3.x

我对 .NET Standard 和最近宣布的 .NET Core 3.0 和 ASP.NET Core 3.1 有几个问题

之前版本的.NET Standard与正在发布的 .NET Core 具有相同的主要版本,但对于 .NET Core 3.1,兼容的是 .NET Standard 2.1。

在此处输入图片说明

  1. .NET Standard 是否会逐渐过时,或者这只是一个与 .NET Core 发布无关的版本号?
  2. 我们可以假设 .NET Standard 2.1 也将与 ASP.NET Core 3.1 兼容吗?
  3. 如果我们将现有的 web 应用程序和 MVC web API 迁移到 asp.net core 3.1 那么 web 应用程序使用的现有 .net 标准类库会发生什么?

我们是否将旧的 .NET Standard 类库的目标框架从:

<TargetFramework>netstandard2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

<TargetFramework>netstandard2.1</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

或更改为

<TargetFramework>netcoreapp3.0</TargetFramework> 
Run Code Online (Sandbox Code Playgroud)

并向 M​​icrosoft.AspNetCore.App 添加 FrameworkReference

c# asp.net-core-mvc asp.net-core asp.net-core-3.0 .net-standard-2.1

8
推荐指数
1
解决办法
9900
查看次数

Visual studio 2019 没有向我显示 .NET Standard 2.1 和 .NET Core 3.1 作为目标框架的一部分。我的系统上安装了.NET Core 3.1

注:我使用的是VS 2019专业版16.0.2

问题: 我的源代码库在 VS 2017 中运行得很好。但是为了支持 .NET core 3.1,我决定将 VS 2017 升级到 VS 2019。当我在 VS 2019 中开源代码时。它没有显示 .NET标准 2.1 和 .NET Core 3.1 作为目标框架的一部分。当我寻找项目属性时。

当我修改 .csproj 文件<TargetFramework>netcoreapp3.1</TargetFramework>然后构建时,我得到:

当前的 .NET SDK 不支持面向 .NET Core 3.1。以 .NET Core 2.1 或更低版本为目标,或者使用支持 .NET Core 3.1 的 .NET SDK 版本。

对于另一个项目,当我修改 .csproj 文件<TargetFramework>netstandard2.1</TargetFramework>然后构建时,我得到:

当前的 .NET SDK 不支持面向 .NET Standard 2.1。以 .NET Standard 2.0 或更低版本为目标,或者使用支持 .NET Standard 2.1 的 .NET SDK 版本。

我尝试过的:

  1. 现在我决定在 VS 2019 中创建一个全新的项目。然后令人惊讶的是它只是向我展示.NET Standard 2.1 …

visual-studio-2019 .net-standard-2.1 .net-core-3.1

6
推荐指数
1
解决办法
7343
查看次数

'无法从程序集'Microsoft.AspNetCore.Mvc.Formatters.Json,版本= 3.0.0.0加载类型'Microsoft.AspNetCore.Mvc.MvcJsonOptions'

netstandard2.1netcoreapp3.0Web应用程序中使用库。在中添加服务时Startup,出现以下错误:

'无法从程序集'Microsoft.AspNetCore.Mvc.Formatters.Json,版本= 3.0.0.0加载类型'Microsoft.AspNetCore.Mvc.MvcJsonOptions'

我还在Microsoft.AspNetCore.Mvc类库中使用了2.2.0包中的某些功能。

这是我的图书馆.csproj

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

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

这是ServiceExtensions我图书馆的课,

public static class ServiceExtensions
{
    public static IMvcBuilder AddMyLibrary(this IMvcBuilder builder)
    {
        builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        builder.AddJsonOptions(options =>
        {
            options.SerializerSettings.ContractResolver = new DefaultContractResolver();
        });
        builder.Services.ConfigureOptions<ConfigureLibraryOptions>();

        return builder;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的ConfigureLibraryOptions课,

public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
    public void Configure(MvcOptions options)
    {
        options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是ConfigureServices来自Startup …

c# json.net asp.net-core-mvc asp.net-core-3.0 .net-standard-2.1

5
推荐指数
3
解决办法
1353
查看次数

NU1202 包 Microsoft.EntityFrameworkCore 6.0.3 与 netstandard2.1 不兼容

我正在尝试使用 Nuget Package Manager 将最新的Microsoft.EntityFrameworkCore6.0.3 安装到目标类库项目中netstandard2.1,但收到此错误:

包 Microsoft.EntityFrameworkCore 6.0.3 与 netstandard2.1 (.NETStandard,版本 = v2.1) 不兼容。包 Microsoft.EntityFrameworkCore 6.0.3 支持:net6.0 (.NETCoreApp,Version=v6.0)

谁能帮助我指导解决这个问题?

c# nuget .net-standard-2.1 ef-core-6.0

5
推荐指数
2
解决办法
5791
查看次数

错误 MSB3644 在 Visual Studio 2017 v15.9.51 上找不到框架“.NETFramework,版本=v6.0”的参考程序集

当我尝试构建一个针对许多框架(包括“.net 6.0”和/或 netstandardX.X Visual Studio 2017)的项目时。即使在安装了 .NET 6.0 后,该主题的错误仍然发生,其中包括:

  • .NET 运行时 6.xx
  • ASP.NET Core 运行时 6.xx
  • .NET 桌面运行时 6.xx

(x 取决于版本)

此外,解决方案资源管理器的依赖项显示错误(参见屏幕截图)

在此输入图像描述

我安装的sdk与“global.json”文件内容兼容:

{
    "sdk": {
        "version": "6.0.401",
        "allowPrerelease": false,
        "rollForward": "feature"
    }
}
Run Code Online (Sandbox Code Playgroud)

整个错误消息:

严重性代码 说明 项目文件行抑制状态错误 MSB3644 找不到框架“.NETFramework,Version=v6.0”的参考程序集。要解决此问题,请安装此框架版本的 SDK 或 Targeting Pack,或者将您的应用程序重新定位到已安装 SDK 或 Targeting Pack 的框架版本。请注意,程序集将从全局程序集缓存 (GAC) 中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位您想要的框架。

但此消息也适用于所有丢失或无法识别的依赖项。

.csproj 文件(目标框架):

<Project Sdk="Microsoft.NET.Sdk">
    
  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;netstandard2.0;net45;net48;netstandard1.5;net40;net35;net20;net6.0</TargetFrameworks>
  </PropertyGroup

  <PropertyGroup Condition="'$(TargetFramework)' == 'net20' ">
    <DefineConstants>$(DefineConstants);LEGACY</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)' == 'net35' ">
    <DefineConstants>$(DefineConstants);LEGACY</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)' == 'net40' ">
    <DefineConstants>$(DefineConstants);LEGACY</DefineConstants>
  </PropertyGroup> …
Run Code Online (Sandbox Code Playgroud)

target-framework visual-studio-2017 .net-standard-2.0 .net-standard-2.1 .net-6.0

5
推荐指数
1
解决办法
1万
查看次数

类库(标准 2.1 或核心 3.1):找不到命名空间名称“IWebHostEnvironment”

  1. 新建项目,类库(.NET 标准)
  2. 在项目上,属性,从 2.0 更改为 2.1
  3. 修改后的 Class1 :
public class Class1
{
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 这固定(正确?) IApplicationBuilder 红色波浪线:
  2. 但是,库项目无法编译:“错误 CS0246 找不到类型或命名空间名称‘IWebHostEnvironment’……”

请为这两个接口添加什么引用?或者你应该只在网站项目中使用这些接口?

.NET Core 3.1 类库的结果也相同。视觉工作室 16.4.4

非常感谢任何帮助。

.net-standard .net-standard-2.1 .net-core-3.1

4
推荐指数
2
解决办法
5920
查看次数

该事件只能出现在 += 或 -= dotnetstandard 2.1 的左侧

我正在使用 dot net standard 2.1 和 c# 8,我想为我的类(接口)创建一个事件,我按照本教程 编写了一个接口:

using System;
using Crawler.Paging;

namespace Crawler
{
    public interface ICrawler
    {
        public event EventHandler NextPage;
        protected virtual void OnNextPage(EventArgs e)
        {

            EventHandler handler = NextPage;
            handler?.Invoke(this,e);
        }
        void Paging(IPaging paging);
    }
}
Run Code Online (Sandbox Code Playgroud)

但请告诉我一个错误:

错误事件“ICrawler.NextPage”只能出现在+=或-=的左侧

我继续进行了这个训练,那么问题出在哪里呢?

.net c#-8.0 .net-standard-2.1

1
推荐指数
1
解决办法
3240
查看次数

在注册的 .NET 数据提供程序列表中找不到指定的不变名称“MySql.Data.MySqlClient”

我有一个使用 .Net Standard 2.1 开发的 C# 库,并且在基于 .Net Core 3.0 构建的测试控制台应用程序中调用该库。但在运行时,GetFactory 抛出异常。

 private DbConnection connection;
 connection = DbProviderFactories.GetFactory("MySql.Data.MySqlClient").CreateConnection();
Run Code Online (Sandbox Code Playgroud)

例外:

DbProviderFactories.GetFactory 在注册的 .NET 数据提供程序列表中找不到指定的不变名称“MySql.Data.MySqlClient”。

我已经安装了MySqlConnector 1.2.1。但这没有帮助。并在 app.config 文件中添加以下内容。

<system.data>
 <DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient" />
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.23.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)

c# mysql .net-core-3.0 .net-standard-2.1

0
推荐指数
1
解决办法
4761
查看次数