Proje, .NET Framework 4.6.1'i hedefleyen bir ASP.NET MVC Web Uygulamasıdır.
Birdenbire (bazı NuGet paketleri yükseltildi) Çalışma zamanı sırasında aşağıdaki hatayı almaya başladım:
CS0012: 'System.Object' türü, başvurulmayan bir derlemede tanımlandı. 'Netstandard, Sürüm = 2.0.0.0, Kültür = nötr, PublicKeyToken = cc7b13ffcd2ddd51' derlemesine bir başvuru eklemeniz gerekir.
Ana görüşümde Index.cshtml
, kullandığım bir çizgide@Html.ActionLink
Makinemde .NET Core SDK 2.0 ve .NET Framework 4.7.1 yüklü ama buna bir referans eklemek istemiyorum. Bu yalnızca bir .NET Framework web uygulamasıdır, yüklü çerçevenin 4.6.1 olduğu Windows IIS'de barındırılır, sunucuda yüklü NET Core yoktur.
Öyleyse neden bir referans eklemek istiyor netstandard
? netstandard
Tam Windows .NET Framework 4.6.1'e başvurmadan nasıl düzeltebilirim ?
İyi çalışan önceki bir işlemi kontrol ettim ve hala bu hatayı alıyorum. Bu nedenle, NuGet paketlerinin yükseltilmesiyle ilgili değildir. Yerel geliştirme makinemde bir şey gibi görünüyor.
Bir uygulamayı bir dizinde yayınlar ve IIS ile çalıştırırsa çalışır.
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>
Uygulamayı VS2017 kullanarak dosya sistemine yayınlarken çıktıda şu uyarıyı alıyorum:
Aşağıdaki derlemenin, hedeften daha yüksek bir .NET Framework sürümüne bağımlılıkları vardır ve çalışma zamanı sırasında hataya neden olacak şekilde doğru yüklenmeyebilir: netstandard, Sürüm = 2.0.0.0, Culture = nötr, PublicKeyToken = cc7b13ffcd2ddd51. Bağımlılıklar şunlardır: System.Transactions, Version = 4.0.0.0, Culture = nötr, PublicKeyToken = b77a5c561934e089. Ya bağımlı derlemenin hedef çerçeve için doğru olduğundan ya da ele aldığınız hedef çerçevenin bağımlı derlemeninki olduğundan emin olmalısınız.
Ama üzerinde hiçbir şey bulamıyorum System.Transactions
. Onu referans alan şeyi nasıl arayabilirim?
System.Data.SQLite.Core
Paketi, .NET Çekirdek dayanır (veya .NET Standard, ben kaynak veya dokümanlar arayan gitmedi). Proje dosyanızın en sonundaki hata mesajına bakın.
packages\System.Data.SQLite.Core.1.0.108.0\lib
Dizine bakıyorum ve içinde kullandığım 4.6 da dahil olmak üzere .NET Framework'ün her sürümü için bir klasör var. Buradaki sorunun bu olduğunu sanmıyorum.