Proyek ini adalah Aplikasi Web ASP.NET MVC yang menargetkan .NET Framework 4.6.1.
Tiba-tiba (beberapa paket NuGet ditingkatkan) saya mulai mendapatkan kesalahan berikut selama runtime:
CS0012: Jenis 'System.Object' ditentukan dalam rakitan yang tidak dirujuk. Anda harus menambahkan referensi ke assembly 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'.
Dalam pandangan utama saya Index.cshtml
, dalam garis yang saya manfaatkan@Html.ActionLink
Saya memiliki .NET Core SDK 2.0 dan .NET Framework 4.7.1 diinstal di mesin saya, tetapi saya tidak ingin menyertakan referensi untuk itu. Ini adalah aplikasi web .NET Framework saja, dihosting di Windows IIS di mana kerangka kerja yang diinstal adalah 4.6.1, tidak ada NET Core yang diinstal di server.
Jadi mengapa meminta untuk menambahkan referensi netstandard
? Bagaimana saya dapat memperbaikinya tanpa referensi netstandard
tetapi menggunakan Windows .NET Framework 4.6.1 lengkap?
Saya telah memeriksa komit sebelumnya yang berfungsi dengan baik dan saya masih mendapatkan kesalahan ini. Jadi ini tidak terkait dengan paket NuGet yang ditingkatkan. Sepertinya ada sesuatu di mesin dev lokal saya.
Jika mempublikasikan aplikasi ke direktori dan menjalankannya dengan IIS, ini berfungsi.
package.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>
Saat menerbitkan aplikasi menggunakan VS2017 ke sistem file, saya mendapatkan peringatan berikut di output:
Rakitan berikut memiliki ketergantungan pada versi .NET Framework yang lebih tinggi dari target dan mungkin tidak memuat dengan benar selama runtime yang menyebabkan kegagalan: netstandard, Versi = 2.0.0.0, Budaya = netral, PublicKeyToken = cc7b13ffcd2ddd51. Ketergantungan tersebut adalah: System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089. Anda harus memastikan bahwa rakitan dependen benar untuk kerangka kerja target, atau memastikan bahwa kerangka kerja target yang Anda tangani adalah rakitan dependen.
Tetapi saya tidak dapat menemukan apa pun System.Transactions
. Bagaimana saya bisa mencari apa yang mereferensikannya?
System.Data.SQLite.Core
paket didasarkan pada NET Inti (atau NET Standar, aku tidak pergi mencari sumber atau docs). Lihat pesan kesalahan di bagian paling akhir file proyek Anda.
packages\System.Data.SQLite.Core.1.0.108.0\lib
direktori dan itu berisi folder untuk setiap versi .NET Framework, termasuk 4.6 yang saya gunakan. Saya tidak berpikir itu masalahnya di sini.