"System.Object"类型在未引用的程序集中定义

 惜泽2502852447 发布于 2023-01-07 18:38

我在我的项目中安装了一个Microsoft ASP.NET Web API压缩nuget包,并在Register方法中添加了一行到WebApiconfig,如此链接所示https://www.nuget.org/packages/Microsoft.AspNet.WebApi.MessageHandlers.Compression /

 GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new CompressionHandler(new GZipCompressor(), new DeflateCompressor()));

还将以下代码添加到web.config文件中


      
        
      

但是我收到了一个错误

错误1类型"System.Object"在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.d:....\App_Start\WebApiConfig.cs

编译器抱怨GlobalConfiguration类,上面有错误.我正在使用> .NET Framework 4.5

3 个回答
  • 我得到了同样的错误并通过做两件事来解决它.

    背景:

    我正在构建一个简单的测试ASP.Net应用程序,以尝试使用Google API的OAuth2.0.我使用"nuget"来安装Google.Apis.Calendar.v3 (v1.13.1.509)库,它带来了很多其他依赖的dll.

    错误:

    在Visual Studio 2015 for Web(Express)上编译一个看似简单的ASP.Net项目,目标是"Framework 4.5".错误以两种方式显示:

    我最初使用Build命令编译代码Ctrl+F5.然后我得到了一个构建错误,但是在"错误"选项卡中没有通常指向源代码行的条目.(该项目将停止建设).输出是:

    ------ Build started: Project: oauth2.pylogen.com, Configuration: Debug Any CPU ------
    Validating Web Site
    Building directory '/App_Code/'.
    
    E:\Projects\oauth2.pylogen.com\App_Code\Google.Api.Pylogen\FlowMetadata.cs(26,13): error 
    CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You 
    must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, 
    PublicKeyToken=b03f5f7f11d50a3a'.
    Validation Complete
    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

    然后我继续安装dotNet Framework 4.6.1 Developer Pack(最新版本不是预览版).

    然后我重新启动VS 2015 for Web并再次构建.这次我在"错误"选项卡中有一个条目,指向源代码行:

    flowInit.Scopes = new string[] { Google.Apis.Calendar.v3.CalendarService.Scope.Calendar };
    

    当我注释掉这一行时,项目构建.我几乎无法对这条线做任何事情,但我只是想表现出错误的默默无闻!

    解决方案:

    安装Framework 4.6.1 Developer Pack之后.我还将此行添加到Web.Config:

    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </assemblies>
    </compilation>
    

    在此之后我的项目完全构建.我的假设是Google指的是较旧的System.Runtime.dll(尽管他们的Nuget包详细信息显示目标框架是4.5).

    2023-01-07 18:39 回答
  • 通过Nuget安装和删除System.ValueTuple的System.ValueTyple.dll文件在我的bin文件夹中。删除它可以为我解决问题。

    2023-01-07 18:39 回答
  • 这有点棘手,因为我还尝试首先将程序集引用添加到项目的根Web.config文件中,这对我的情况没有帮助.之后我对Web.config文件做了同样的事情,该文件位于我的ASP.NET MVC项目的Views 文件夹中:Views\Web.config

      <system.web>
         <compilation>
            <assemblies>
              <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </assemblies>
         </compilation>
      </system.web>
    

    以上工作.

    实际上我之前已经有过一个程序集引用System.Web.Mvc,所以这里是我的ASP.NET MVC项目的完整列表.

      <system.web>
        <compilation>
          <assemblies>
            <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          </assemblies>
        </compilation>
      </system.web>
    

    2023-01-07 18:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有