이 프로젝트는 .NET Framework 4.6.1을 대상으로하는 ASP.NET MVC 웹앱입니다.
갑자기 (일부 NuGet 패키지가 업그레이드 됨) 런타임 중에 다음 오류가 발생하기 시작했습니다.
CS0012 : 'System.Object'형식이 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 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
전체 Windows .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.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51. 종속성은 System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089입니다. 종속 어셈블리가 대상 프레임 워크에 대해 올바른지 확인하거나 주소를 지정하는 대상 프레임 워크가 종속 어셈블리의 프레임 워크인지 확인해야합니다.
하지만에서 아무것도 찾을 수 없습니다 System.Transactions
. 그것을 참조하는 것을 어떻게 검색 할 수 있습니까?
System.Data.SQLite.Core
패키지는 .NET 코어를 기반으로 (또는 .NET 표준, 나는 소스 또는 문서를 찾고 가지 않았다). 프로젝트 파일 맨 끝에있는 오류 메시지를 확인하십시오.
packages\System.Data.SQLite.Core.1.0.108.0\lib
디렉터리를 보고 있는데 여기에는 내가 사용중인 4.6을 포함하여 .NET Framework의 각 버전에 대한 폴더가 포함되어 있습니다. 나는 그것이 여기서 문제라고 생각하지 않습니다.