어셈블리의 net standard, Version=2.0.0.0에 대한 참조를 추가해야 합니다.
프로젝트는 ASP입니다.대상을 지정하는 NET MVC 웹 앱.NET Framework 4.6.1.
갑자기 (일부 NuGet 패키지가 업그레이드됨) 런타임 중에 다음 오류가 발생하기 시작했습니다.
CS0012: '시스템' 유형입니다.'개체'가 참조되지 않는 어셈블리에 정의되어 있습니다.어셈블리의 netstandard, Version=2.0.0.0, Culture=neutral, PublicKey에 대한 참조를 추가해야 합니다.토큰=cc7b13ffcd2ddd51'.
의 주된 견해로는 내보기에가에.Index.cshtml
내가 사용하는 방법으로@Html.ActionLink
저는 가지고 있습니다.NET Core SDK 2.0 및 .NET Framework 4.7.1이 내 컴퓨터에 설치되어 있지만 이에 대한 참조를 포함하고 싶지 않습니다.이것은 입니다.NET Framework 웹 앱만 해당되며 설치된 프레임워크가 4.6.1인 Windows IIS에서 호스팅되며 서버에 NET Core가 설치되어 있지 않습니다.
그래서 왜 그것이 언급을 추가하도록 요청하는 것입니까?netstandard
참조하지 않고 어떻게 수정할 수 있습니까?netstandard
전체 창만 표시됩니다.NET Framework 4.6.1?
이전 커밋이 정상적으로 작동하는 것을 확인했는데 여전히 이 오류가 발생하고 있습니다.따라서 NuGet 패키지가 업그레이드되는 것과 관련이 없습니다.내 지역 개발 기계에 뭔가 있는 것 같습니다.
앱을 디렉터리에 게시하고 IIS로 실행하면 작동합니다.
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net46" />
<package id="BundleTransformer.Core" version="1.9.69" targetFramework="net46" />
<package id="BundleTransformer.Handlebars" version="1.9.73" targetFramework="net46" />
<package id="BundleTransformer.Less" version="1.9.69" targetFramework="net46" />
<package id="BundleTransformer.Yui" version="1.9.52" targetFramework="net46" />
<package id="Dapper" version="1.42" targetFramework="net46" />
<package id="EcmaScript.Net" version="1.0.1.0" targetFramework="net46" />
<package id="EntityFramework" version="6.0.0" targetFramework="net46" />
<package id="Glimpse" version="1.8.6" targetFramework="net46" />
<package id="Glimpse.AspNet" version="1.9.2" targetFramework="net46" />
<package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net46" />
<package id="JavaScriptEngineSwitcher.Core" version="1.2.4" targetFramework="net46" />
<package id="JavaScriptEngineSwitcher.V8" version="1.3.0" targetFramework="net46" />
<package id="jQuery" version="2.1.3" targetFramework="net46" />
<package id="jQuery.Validation" version="1.13.1" targetFramework="net46" />
<package id="LowercaseDashedRoute" version="1.0.14" targetFramework="net46" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net46" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
<package id="Moment.js" version="2.10.2" targetFramework="net46" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
<package id="NWebsec" version="5.1.1" targetFramework="net46" />
<package id="NWebsec.Core" version="2.1.0" targetFramework="net46" />
<package id="NWebsec.Mvc" version="5.1.1" targetFramework="net46" />
<package id="Owin" version="1.0" targetFramework="net46" />
<package id="Respond" version="1.4.2" targetFramework="net46" />
<package id="Sendgrid" version="6.3.0" targetFramework="net46" />
<package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net46" />
<package id="Serilog" version="2.6.0" targetFramework="net46" />
<package id="Serilog.Enrichers.Environment" version="2.1.2" targetFramework="net46" />
<package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net46" />
<package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net46" />
<package id="Serilog.Sinks.Sentry" version="2.1.4" targetFramework="net46" />
<package id="SerilogWeb.Classic" version="2.1.17" targetFramework="net46" />
<package id="SharpRaven" version="2.2.0" targetFramework="net46" />
<package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
<package id="Twitter.Bootstrap.Less" version="3.3.4" targetFramework="net46" />
<package id="WebActivatorEx" version="2.0.6" targetFramework="net46" />
<package id="WebGrease" version="1.6.0" targetFramework="net46" />
<package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net46" />
</packages>
VS2017을 사용하여 앱을 파일 시스템에 게시할 때 출력에 다음 경고가 표시됩니다.
다음 어셈블리는 의 버전에 종속되어 있습니다.대상보다 높고 런타임 중에 올바르게 로드되지 않아 오류가 발생할 수 있는 NET Framework: netstandard, Version=2.0.0, Culture=neutral, PublicKey토큰=cc7b13ffcd2ddd51.종속성은 시스템입니다.트랜잭션, 버전=4.0.0.0, Culture=중립, 공개 키토큰=b77a5c561934e089.종속 어셈블리가 대상 프레임워크에 대해 올바른지 확인하거나 대상 프레임워크가 종속 어셈블리의 것인지 확인해야 합니다.
하지만 나는 아무것도 찾을 수 없습니다.System.Transactions
참조하는 내용을 검색하려면 어떻게 해야 합니까?
해결책은 GitHub의 다음과 같은 문제일 수 있습니다.
다음과 같이 web.config에 net standard reference를 추가해 보십시오."
<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" />
4.6.1을 사용하는 것으로 알고 있습니다. 하지만 선택은.NET 4.7.1은 이전 Framework 버전과 완전히 호환되지 않기 때문에 중요합니다.NET 표준 2.0.
저는 이것을 제가 소개했을 때 고통스러운 경험을 통해 알고 있습니다.NET 표준 라이브러리 NUGET 패키지와 참조가 깨지는 문제가 많았습니다.고려해야 할 또 다른 변경 사항은 패키지 참조로 업그레이드하는 것입니다.package.config
files 파일
이 안내서를 참조하면 업그레이드에 도움이 되는 도구가 필요할 수도 있습니다.하지만 최신 VS 15.7 버전이 필요합니다.
.csproj 파일을 수동으로 편집하고 아래 참조를 추가하는 것이 저에게 효과가 있었습니다.
<ItemGroup>
<Reference Include="netstandard" />
</ItemGroup>
여기서 제안해주신 Fahad Alshaya님께 감사드립니다.
저는 이 스레드에서 다른 사람들의 답변을 조합해야 했습니다.
- NetStandard를 설치합니다.NuGet을 통한 라이브러리
- 을 수동으로 합니다.csproj 파일을 수동으로 편집하고 참조를 추가합니다.
<Reference Include="netstandard" />
- 프로젝트 확장 -->VS 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 'net standard'를 클릭한 후 속성 페이지를 표시하고 "Copy Local"을 true로 설정합니다.
Bin과 Obj 폴더를 삭제하는 것이 저에게 효과가 있었습니다.
4.6.1 프레임워크에서 4.7.2로 업그레이드한 후 다음 오류가 발생하기 시작했습니다.
"'시스템' 유형입니다.'개체'가 참조되지 않는 어셈블리에 정의되어 있습니다.어셈블리의 netstandard, Version=2.0.0.0, Culture=neutral, PublicKey에 대한 참조를 추가해야 합니다.Token=cc7b13ffcd2dd51'. 그리고 궁극적으로 해결책은 위에서 언급한 "net standard" 어셈블리 참조를 추가하는 것이었습니다.
<compilation debug="true" targetFramework="4.7.1" >
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
저는 전에 이런 일을 겪은 적이 있으며 여러 가지 시도를 통해 해결했습니다.
- 빈 폴더가 있는 경우 삭제
- 숨겨진 .vs 폴더 삭제
- 4.6.1 타겟팅 팩이 설치되어 있는지 확인합니다.
- 마지막 배수로 작업: 시스템에 참조를 추가합니다.런타임(프로젝트 추가 -> 참조 -> 오른쪽 클릭) 시스템 옆에 있는 상자를 선택합니다.런타임), 하지만 저는 항상 위의 것들 중 하나가 이것을 하는 대신에 그것을 해결했다는 것을 알게 되었다고 생각합니다.
또한 전체 프레임워크에서 실행되는 .net 코어 앱이라면 프로젝트 루트에 global.json 파일을 포함하고 해당 프로젝트에 사용할 SDK를 가리켜야 합니다.
{
"sdk": {
"version": "1.0.0-preview2-003121"
}
}
netstandard.dll 속성에서 Copy Enbale을 true로 설정합니다.
솔루션 탐색기를 열고 netstandard.dll을 마우스 오른쪽 버튼으로 클릭합니다.로컬 복사를 true로 설정합니다.
이 스레드는 오래된 스레드이지만 오늘도 같은 문제가 있었습니다. 지난주에 일부 NuGet 패키지를 업데이트했습니다. 테스트 서버에 게시했을 때 MVC 웹 사이트가 개발 머신에서 정상적으로 작동했지만 실패했습니다.
저는 수많은 게시물을 읽었지만 아무 것도 작동하지 않았습니다.마지막으로 로컬 빈에 있는 DLL을 테스트 서버에 있는 DLL과 비교한 결과 netstandard.dll이 업로드되지 않았습니다. 일단 업로드된 웹 사이트는 정상적으로 작동했습니다. VS2017 웹 배포가 DLL을 게시하지 않은 이유를 알 수 없습니다.
위의 어떤 것도 당신에게 맞지 않을 경우를 대비해서 조심해야 할 것입니다.
web.config 파일이 없는 사용자.웹 응용 프로그램이 아닌 출력 유형입니다.아래의 제공 코드로 프로젝트 파일(.svroj)을 업데이트합니다.
잘못된 방법으로 .netframework를 추가/제거하거나 예기치 않은 방법으로 손상될 수 있습니다.
<ItemGroup>
<Reference Include="netstandard" />
</ItemGroup>
출력 유형
- 콘솔 응용 프로그램
- 클래스 라이브러리
netstandard.dll이 존재하는 위치는 다음과 같습니다.C:\프로그램 파일(x86)\참조 어셈블리\Microsoft\Framework\.NET 프레임워크\v4.7.2\Facades\netstandard.dll 이를 통해 프로젝트에 참조를 추가합니다.
다음 중 하나와 관련이 있을 수 있습니다.
- 새 SDK를 설치합니다.
- .tftroj에서 참조 Include="net standard"를 확인합니다.
- Views\Web.config 및 Web.config의 컴파일 태그에서 어셈블리 버전을 확인합니다.
업그레이드할 때 이런 경험을 했습니다.NET Core 1.1 - 2.1.
저는 여기에 설명된 지침을 따릅니다.
제거시를 제거해 .<RuntimeFrameworkVersion>1.1.1</RuntimeFrameworkVersion>
또는<NetStandardImplicitPackageVersion>
.svroj의 섹션션
4.6.1에서 4.7.2로 마이그레이션된 애플리케이션을 배포한 후 프로덕션 서버에서 이 오류가 발생하기 시작했습니다.
우리는 그것을 알아챘습니다.NET 프레임워크 4.7.2가 설치되지 않았습니다.이 문제를 해결하기 위해 다음 단계를 수행했습니다.
를 설치했습니다.NET Framework 4.7.2 출처:
기계를 다시 시작했습니다.
를 사용하여 응용 프로그램을 다시 실행합니다.컴퓨터에 설치된 NetFramework 4.7.2 버전에서 문제가 해결되었습니다.
지금 설치 애플리케이션 작업 후에도 동일한 문제에 직면합니다.
1-
<compilation debug="true" targetFramework="4.7.1">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
2 - 참조 추가
**C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\ADL
Tools\2.4.0000.0\ASALocalRun\netstandard.dll**
3-
Copy Above Path Dll to Application Bin Folder on web server
Quangoin의 솔루션은 작동하고 있지만 저는 새로운 프로젝트처럼 제 웹.config에 이 코드를 추가하여 해결하는 것을 선호합니다.
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
a를 추가하려고 할 때 이 문제에 직면했습니다..NET 4.6.1 라이브러리에 대한 NET 표준 종속성 및 Mono 4.6.2(Ubuntu 16.04와 함께 제공되는 버전)로 Linux에서 컴파일합니다.
오늘 드디어 해결했습니다. 솔루션은 다음 두 가지 작업을 모두 수행해야 합니다.
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
에..svroj 파일에 있습니다.- 모노를 최신 버전으로 업그레이드합니다.5.x가 작동해야 한다고 생각하지만 확실히 하려면 Mono 6.8.0.105가 포함된 Ubuntu 20.04(작성 당시 미리 보기에만 있음)를 설치하면 됩니다.
프로젝트에서 web.config에 추가할 수 있습니다.
프로젝트 web.config에 추가하면 MVC와 함께 작동하기 때문에 작동하지 않습니다.
요.net5.0
다을사작성빌된작프포트로젝함을 사용하여 됩니다.netstandard2.0
<Project>
<Target Name="RestoreBuildTasks">
<MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Restore" Properties="Configuration=Release"/>
</Target>
<Target Name="BuildBuildTasks">
<MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Build" Properties="Configuration=Release"/>
</Target>
<UsingTask
TaskName="Brick.Build.NugetTask"
AssemblyFile="AGXBrick/BuildTasks/bin/$(Platform)/Release/netstandard2.0/BuildTasks.dll"/>
<Target Name="CheckNuGetSources" BeforeTargets="Restore" DependsOnTargets="RestoreBuildTasks;BuildBuildTasks">
<NuGetTask />
</Target>
</Project>
곳BuildTasks.csproj
입니다다.
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
있 수 습 니 다 결 할 를 정 하 여 ▁iTargetFramework=netstandard2.0
에 시대에MSBuild
실행:
<MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Restore" Properties="Configuration=Release;TargetFramework=netstandard2.0"/>
동일한 문제가 발생했습니다. 프로젝트에서 .net 프레임워크 4.6.1을 사용하고 최신 MSBuild(16.10.2)를 사용하여 솔루션을 구축할 때 ValueType...과 같은 오류 메시지가 표시됩니다.net standard 2.0...을 참조해야 합니다.
설치해서 알게 되었습니다.Net SDK 항목, 이 항목을 선택하면 .NET 5.0 런타임 및 .NET 3.1 런타임도 설치됩니다.
이 항목을 설치한 후 오류 없이 최신 MSBuild로 프로젝트를 구축할 수 있습니다!
지점을 전환하는 것 때문인지 가끔 나타나는 동일한 문제가 있었습니다.
4.6.1 사용.비주얼 스튜디오 2019, 리샤퍼...
해결책은 새 참조를 수동으로 추가하고 netstandard.dll을 찾은 다음 추가하고 빌드(오류 galore)하며 참조를 제거하고 다시 빌드(오류 없음)하는 것이었습니다.
나에게 그것은 web.config 파일에서 틀이 잘못 설정되는 것만큼 간단했습니다.
솔루션은 4.8이지만 web.config는 4.5.1이었습니다.
부터
<httpRuntime requestValidationMode="2.0" maxRequestLength="8192" executionTimeout="110" targetFramework="4.5.1" />
로.
<httpRuntime requestValidationMode="2.0" maxRequestLength="8192" executionTimeout="110" targetFramework="4.8" />
는 이것이 이라는 것을 , 를 가지고 .You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
그리고 저는 좀 더 최신의 답을 발견했습니다.
로컬로 빌드하는 중이었는데 빌드 서버에 푸시하자 이 오류가 발생했습니다.문제는 곧 폐기될 빌드 서버에 있는 VS2015 대신 빌드 에이전트가 VS2019를 사용하도록 하는 것이었습니다.
로의 마이그레이션을 시작했습니다.분기 중 하나에 NETv4.7.2가 있습니다.그런 다음 이전 분기(.net 4.5.1) 중 하나에서 항목에 오류가 발생하기 시작했습니다.다양한 솔루션을 시도했습니다.
- 깨끗한/깨끗한 용액 - 도움이 되지 않음
- 수동으로 bin/obj 폴더 제거 - 도움이 되지 않음
- 수동으로 외부 패키지 제거 - 도움이 되지 않음
버전이 없거나 무시된 파일을 모두 제거했습니다.*.suo 및 *.user는 대부분 이전 단계에서 이미 제거된 다른 모든 파일입니다.그리고 그것이 그 일을 했습니다.이 문제는 최신 닷넷 버전의 다른 지점에서 온 *.suo 또는 *.user 파일에 있는 문제인 것 같습니다.
저의 경우 VS 2019를 5월 21일자로 최신 버전으로 업데이트했지만 동일한 문제가 발생했습니다.
으로 해결했습니다.
- 오류 메시지를 주의 깊게 보기
The type '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
- .csproj 파일을 열고 다음을 수행합니다.
<ItemGroup>
태그 새로 추가<Reference>
아래와 같이 태그합니다.
<Reference Include="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- VS 프롬프트에 따라 프로젝트를 다시 로드하고 다시 빌드하면 동일한 문제가 발생하지 않습니다.
이 문제는 설치된 Visual Studio 및 Windows 버전을 기반으로 하며 다음 단계를 수행할 수 있습니다.
- 명령 창으로 이동
다음 명령으로 PCL을 다운그레이드했습니다.
Install-Package Xamarin.Forms -Version 2.5.1.527436
- 프로젝트를 다시 빌드합니다.
- 이제 필요한 출력을 볼 수 있습니다.
언급URL : https://stackoverflow.com/questions/49925484/you-must-add-a-reference-to-assembly-netstandard-version-2-0-0-0
'programing' 카테고리의 다른 글
Bash에서 글로벌에 일치하는 항목이 있는지 테스트 (0) | 2023.05.12 |
---|---|
Git에서 마지막 커밋을 두 개로 나누는 방법은 무엇입니까? (0) | 2023.05.12 |
VBA를 사용하여 프로그래밍 방식으로 참조를 추가하는 방법 (0) | 2023.05.12 |
데이터 바인딩 드롭다운 목록 - 초기 값 (0) | 2023.05.12 |
HTML5 비디오 클라이언트에 대한 실시간 http 스트리밍에 대한 최상의 접근 방식 (0) | 2023.05.12 |