Das Projekt ist eine ASP.NET MVC-Webanwendung für .NET Framework 4.6.1.
Plötzlich (einige NuGet-Pakete wurden aktualisiert) wurde zur Laufzeit der folgende Fehler angezeigt:
CS0012: Der Typ 'System.Object' wird in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen einen Verweis auf die Assembly 'netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51' hinzufügen.
In meiner Hauptansicht Index.cshtml
in einer Zeile, in der ich Gebrauch mache@Html.ActionLink
Ich habe .NET Core SDK 2.0 und .NET Framework 4.7.1 auf meinem Computer installiert, möchte aber keinen Verweis darauf einfügen. Dies ist nur eine .NET Framework-Webanwendung. Sie wird unter Windows IIS gehostet, wo das installierte Framework 4.6.1 ist. Auf dem Server ist kein NET Core installiert.
Warum wird darum gebeten, einen Verweis auf hinzuzufügen netstandard
? Wie kann ich das Problem beheben, ohne auf netstandard
Windows .NET Framework 4.6.1 zu verweisen ?
Ich habe ein vorheriges Commit ausgecheckt, das gut funktioniert hat, und ich erhalte immer noch diesen Fehler. Es hängt also nicht mit NuGet-Paketen zusammen, die aktualisiert werden. Scheint etwas auf meiner lokalen Entwicklungsmaschine zu sein.
Wenn Sie die App in einem Verzeichnis veröffentlichen und mit IIS ausführen, funktioniert sie.
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>
Beim Veröffentlichen der App mit VS2017 im Dateisystem wird in der Ausgabe die folgende Warnung angezeigt:
Die folgende Assembly hat Abhängigkeiten von einer Version von .NET Framework, die höher als das Ziel ist und zur Laufzeit möglicherweise nicht korrekt geladen wird und einen Fehler verursacht: netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51. Die Abhängigkeiten sind: System.Transactions, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089. Sie sollten entweder sicherstellen, dass die abhängige Assembly für das Zielframework korrekt ist, oder sicherstellen, dass das Zielframework, das Sie ansprechen, das der abhängigen Assembly ist.
Aber ich kann nichts finden System.Transactions
. Wie kann ich suchen, worauf es verweist?
System.Data.SQLite.Core
Paket basiert auf .NET Core (oder .NET Standard, ich habe nicht nach der Quelle oder den Dokumenten gesucht). Sehen Sie sich die Fehlermeldung ganz am Ende Ihrer Projektdatei an.
packages\System.Data.SQLite.Core.1.0.108.0\lib
Verzeichnis an und es enthält einen Ordner für jede Version von .NET Framework, einschließlich 4.6, das ich verwende. Ich denke nicht, dass das hier das Problem ist.