programing

어셈블리의 net standard, Version=2.0.0.0에 대한 참조를 추가해야 합니다.

starjava 2023. 5. 12. 20:09
반응형

어셈블리의 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로 실행하면 작동합니다.

.csprojectist에 대한 링크

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.configfiles 파일

안내서를 참조하면 업그레이드에 도움이 되는 도구가 필요할 수도 있습니다.하지만 최신 VS 15.7 버전이 필요합니다.

.csproj 파일을 수동으로 편집하고 아래 참조를 추가하는 것이 저에게 효과가 있었습니다.

<ItemGroup>
    <Reference Include="netstandard" />
</ItemGroup>

여기서 제안해주신 Fahad Alshaya님께 감사드립니다.

저는 이 스레드에서 다른 사람들의 답변을 조합해야 했습니다.

  1. NetStandard를 설치합니다.NuGet을 통한 라이브러리
  2. 을 수동으로 합니다.csproj 파일을 수동으로 편집하고 참조를 추가합니다. <Reference Include="netstandard" />
  3. 프로젝트 확장 -->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 이를 통해 프로젝트에 참조를 추가합니다.

다음 중 하나와 관련이 있을 수 있습니다.

  1. 새 SDK를 설치합니다.
  2. .tftroj에서 참조 Include="net standard"를 확인합니다.
  3. 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가 설치되지 않았습니다.이 문제를 해결하기 위해 다음 단계를 수행했습니다.

  1. 를 설치했습니다.NET Framework 4.7.2 출처:

    https://support.microsoft.com/en-us/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows

  2. 기계를 다시 시작했습니다.

  3. 확인했습니다.검색 방법의 도움을 받아 NET Framework 버전.NET 버전?

를 사용하여 응용 프로그램을 다시 실행합니다.컴퓨터에 설치된 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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

a를 추가하려고 할 때 이 문제에 직면했습니다..NET 4.6.1 라이브러리에 대한 NET 표준 종속성 및 Mono 4.6.2(Ubuntu 16.04와 함께 제공되는 버전)로 Linux에서 컴파일합니다.

오늘 드디어 해결했습니다. 솔루션은 다음 두 가지 작업을 모두 수행해야 합니다.

  1. <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion><TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>에..svroj 파일에 있습니다.
  2. 모노를 최신 버전으로 업그레이드합니다.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일자로 최신 버전으로 업데이트했지만 동일한 문제가 발생했습니다.

으로 해결했습니다.

  1. 오류 메시지를 주의 깊게 보기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
  2. .csproj 파일을 열고 다음을 수행합니다.<ItemGroup>태그 새로 추가<Reference>아래와 같이 태그합니다.
  • <Reference Include="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  1. VS 프롬프트에 따라 프로젝트를 다시 로드하고 다시 빌드하면 동일한 문제가 발생하지 않습니다.

이 문제는 설치된 Visual Studio 및 Windows 버전을 기반으로 하며 다음 단계를 수행할 수 있습니다.

  1. 명령 창으로 이동
  2. 다음 명령으로 PCL을 다운그레이드했습니다.

    Install-Package Xamarin.Forms -Version 2.5.1.527436
    
  3. 프로젝트를 다시 빌드합니다.
  4. 이제 필요한 출력을 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/49925484/you-must-add-a-reference-to-assembly-netstandard-version-2-0-0-0

반응형