【问题标题】:ASP.Net MVC ASPNETCOMPILER issues after adding .Net Standard 2.0 package添加 .Net Standard 2.0 包后的 ASP.Net MVC ASPNETCOMPILER 问题
【发布时间】:2020-04-21 20:24:24
【问题描述】:

我创建了一些帮助程序库 (NuGet),它们在我的各种 .Net FullFramework 和 .Net Core 应用程序中运行良好。

但是,当我将它们添加到一个特别复杂的 Asp.Net MVC (.Net 4.7.2) Web 应用程序时,我收到以下错误:

  1. “System.Object”类型是在未引用的程序集中定义的。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=.... 的引用。
  2. “System.IComparable”类型是在未引用的程序集中定义的。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=.... 的引用。
  3. “System.IFormattable”类型在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=.... 的引用。
  4. “System.IConvertable”类型在未引用的程序集中定义。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=.... 的引用。
  5. “System.ValueType”类型是在未引用的程序集中定义的。您必须添加对程序集 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=.... 的引用。

在“输出”窗口中,最后几个显示为:

ASPNETCOMPILER:错误 CS0455:类型参数“T”继承冲突 约束“System.IFormattable”和“System.IComparable”

我的 NuGet 包(A、B、C D 和 E)本身具有以下 NuGet 包:

PackageA - <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>

  • Microsoft.CodeAnalysis.FxCopAnalyzers 2.98
  • NETStandard.Library 2.0.3
  • StyleCop.Analyzers 1.1.118

PackageB - <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>

  • 包A
  • Microsoft.CodeAnalysis.FxCopAnalyzers 2.98
  • NETStandard.Library 2.0.3
  • Newtonsoft.Json 12.0.3
  • StyleCop.Analyzers 1.1.118
  • System.Configuration.ConfigurationManager 4.7.0
  • System.Data.SqlClient 4.8.1

PackageC - <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>

  • 包B
  • Microsoft.CodeAnalysis.FxCopAnalyzers 2.98
  • NETStandard.Library 2.0.3
  • StyleCop.Analyzers 1.1.118
  • System.Diagnostics.EventLog 4.7.0

PackageD - <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>

  • 包C
  • Microsoft.CodeAnalysis.FxCopAnalyzers 2.98
  • NETStandard.Library 2.0.3
  • StyleCop.Analyzers 1.1.118
  • System.Runtime.Caching 4.7.0

PackageE - <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>

  • 包装D
  • Microsoft.CodeAnalysis.FxCopAnalyzers 2.98
  • NETStandard.Library 2.0.3
  • StyleCop.Analyzers 1.1.118

我已经尝试了以下方法,或者一起尝试,或者一次尝试一个......没有运气。

  1. 添加了对 NETStandard.Library (2.0.3) 的 NuGet 引用,并尝试了 2.0.0(因为这是专门要求的)。
  2. 在我的 *.csprog 文件中添加了 <Reference Include="netstandard" />

【问题讨论】:

    标签: asp.net .net asp.net-mvc .net-standard .net-standard-2.0


    【解决方案1】:

    最后,通过更改我的 web.config 解决了这个问题

    <compilation debug="true" targetFramework="4.7.2" />
    

    <compilation debug="true" targetFramework="4.7.2" > 
      <assemblies>
        <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/> 
      </assemblies>
    </compilation>
    
    

    感谢David Sekar 的这篇帖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多