'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
'programing' 카테고리의 다른 글
기본 딕트의 중첩 기본 딕트 (0) | 2023.07.08 |
---|---|
Vuex 스토어 내에서 일반 작업을 수행하는 가장 좋은 방법은 무엇입니까? (0) | 2023.07.08 |
mongodb 또는 cassandra를 사용한 공간 데이터 (0) | 2023.07.08 |
SQL Server 스키마 이름 바꾸기 (0) | 2023.07.08 |
선형 회귀 분석에서 p-값 및 r-값 추출 (0) | 2023.07.08 |