プロジェクトは、.NET Framework 4.6.1を対象とするASP.NET MVC Webアプリです。
突然(一部の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 Webアプリのみで、インストールされているフレームワークが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の各バージョンのフォルダーが含まれています。ここでは問題ではないと思います。