programing

'System' 유형입니다.개체'가 참조되지 않는 어셈블리에 정의되었습니다.

newstyles 2023. 7. 8. 10:40

'System' 유형입니다.개체'가 참조되지 않는 어셈블리에 정의되었습니다.

Microsoft ASP.NET Web API Compression 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 파일에 다음 코드를 추가했습니다.

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

하지만 오류가 발생합니다.

오류 1 'System' 유형.'개체'가 참조되지 않는 어셈블리에 정의되어 있습니다.어셈블리 '시스템'에 대한 참조를 추가해야 합니다.런타임, 버전=4.0.0.0, Culture=중립, 공개 키토큰=b03f5f7f11d50a3a'.D:......\App_Start\WebApiConfig.cs

컴파일러가 위의 오류로 GlobalConfiguration 클래스에 대해 불만을 제기하고 있습니다.>NET Framework 4.5를 사용하고 있습니다.

저는 같은 오류를 얻었고 두 가지 일을 하면서 그것을 극복했습니다.

배경:

Google API의 OAuth 2.0으로 작업하기 위해 간단한 테스트 ASP.Net 응용 프로그램을 만들고 있습니다.을 사용하여 "겟을사여설치너했다니습용하▁the다▁"니습▁i"를 설치했습니다.Google.Apis.Calendar.v3 (v1.13.1.509)도서관, 그리고 그것은 그것이 의존하는 많은 다른 dll들을 가져왔습니다.

오류:

Visual Studio 2015 for Web(Express)에서 "Framework 4.5"를 대상으로 하는 단순해 보이는 ASP.Net 프로젝트를 컴파일할 때오류는 두 가지 방식으로 나타났습니다.

명령을 했습니다.Ctrl+F5빌드 오류가 발생했지만 "오류" 탭에 일반적으로 소스 코드 줄을 가리키는 항목이 없습니다.(프로젝트가 빌드를 중단할 것입니다.)출력은 다음과 같습니다.

빌드 시작:프로젝트: oauth2.pylogen.com , 구성:CPU 디버그 ------웹 사이트를 확인하는 중'/App_Code/' 디렉토리를 빌드하는 중입니다.

E:\Projects\oauth2.pylogen.com \앱_코드\Google.Api.Pylogen\FlowMetadata.cs (26,13): 오류CS0012: '시스템' 유형입니다.'개체'가 참조되지 않는 어셈블리에 정의되어 있습니다.어셈블리 'System'에 대한 참조를 추가해야 합니다.런타임, Version=4.0.0.0, Culture=neutral,공개 키토큰=b03f5f7f11d50a3a'.
검증 완료빌드: 0 성공 또는 최신, 1 실패, 0 건너뛰기 ==========

그런 다음 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을 설치한 후.이 줄도 웹에 추가했습니다.구성:

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

이 후에 저의 프로젝트는 완전히 구축됩니다.제 생각에는 구글이 이전 시스템을 언급하고 있는 것 같습니다.Runtime.dll(대상 프레임워크가 4.5임을 나타내는 Nuget 패키지 세부 정보).

프로젝트의 root Web.config 파일에 어셈블리 참조를 먼저 추가하려고 했지만 제 경우에는 도움이 되지 않았습니다.그런 다음 ASP.NET MVC 프로젝트의 Views 폴더에 있는 Web.config 파일에 대해 동일한 작업을 수행했습니다.보기\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>

시스템 설치 및 제거 중입니다.은 Nuget을 남겨두었습니다. Nuget을 남겨두었습니다. ValueTuple은 한통입니다.System.ValueTuple.dll내 bin 폴더에 있는 파일.그것을 삭제한 것이 저에게 문제를 해결했습니다.

저는 C# 컴파일러를 Roslyn으로 업그레이드하여 이 문제를 해결했습니다.다음으로 이동하여 수행할 수 있습니다.Project-Enable latest C# and VB features for ASP.NET Project.

.NET Facades 폴더의 다른 파일도 동일한 문제를 일으킬 수 있으며 문제의 각 파일에 대해 위와 동일한 접근 방식을 사용하여 해결됩니다.

다음 폴더(대상 .NET 런타임에 따라 다름)에서 문제의 파일을 찾을 수 있습니다. 예:

.NET 4.5.1 – {ProgramFilesFolder x86 folder} \Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades
.NET 4.5 – {ProgramFilesFolder x86 folder} \Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades

https://web.archive.org/web/20150826050219/http 에서 발췌://www.lyalin.com/2014/04/25/the-type-system-object-is-defined-in-an-assembly-that-is-not-reference-mvc-pcl-issue/

추가하기<Reference Include="System.Runtime" /> 파일 앞에 csproj 입니다.<Reference Include="System.Runtime.Serialization" />제 문제를 해결했습니다.

솔루션의 대상 프레임워크를 .NET Framework 4.5에서 .NET Framework 4.6.1로 변경하면 효과가 있습니다.

NetStandard에 대한 위의 오류 수정을 요구하는 Nuget에 대한 매우 큰 업데이트 후에 이 오류를 받았습니다.다음과 같이 수정했습니다.

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

제게 효과적인 해결책은 다음을 대체하는 것이었습니다.compilation루트의 노드web.config이것으로:

<system.web>
  <compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>
  <httpRuntime targetFramework="4.7.1" />
...

업데이트해야 합니다.targetFramework당신이 사용하는 모든 것에.

출처: https://stackoverflow.com/a/51743098/550975

이것은 닷넷 6.0을 사용한 F# 프로젝트에서 얻었습니다.다음 작업을 수행하여 해결:

  • 수동으로 bin 및 obj 폴더 삭제
  • dotnet clean
  • dotnet nuget locals all --clear
  • dotnet restore
  • dotnet build

언급URL : https://stackoverflow.com/questions/24396711/the-type-system-object-is-defined-in-an-assembly-that-is-not-referenced