[解決済み] アセンブリ 'netstandard, Version=2.0.0.0' への参照を追加する必要があります。
質問
プロジェクトは、.NET Framework 4.6.1 をターゲットとする ASP.NET MVC Web App です。
突然(いくつかの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で実行すると、動作します。
パッケージ.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 のバージョンに依存しています。 ターゲットより上位のフレームワークのため、正しくロードされない可能性があります。 netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. 依存関係 があります。System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. を確認する必要があります。 依存アセンブリがターゲットフレームワークに対して正しいか、あるいは ターゲットとなるフレームワークが、依存するフレームワークのものであること。 アセンブリを使用します。
しかし
System.Transactions
. それを参照しているものを検索するにはどうすればよいのでしょうか?
解決方法は?
私は、解決策は GitHubにあるこの問題 :
<ブロッククオートweb.configにnetstandardの参照を追加してください。
<system.web>
<compilation debug="true" targetFramework="4.7.1" >
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.7.1" />
4.6.1をお使いのようですが、古いFrameworkバージョンは.NET Standard 2.0と完全な互換性がないため、.NET 4.7.1を選択したのは重要なことです。
私が.NET Standardライブラリを導入したとき、NUGETパッケージと参照が壊れるという多くの問題が発生しました。他に考慮すべき変更は
パッケージ リファレンス
の代わりに
package.config
ファイルを作成します。
参照 本書 が必要かもしれませんし、また アップグレードを支援するツール . ただし、VS 15.7後期バージョンが必要です。
関連
-
[解決済み] ASP.NETでページを更新するにはどうすればよいですか?(コードで勝手に再読み込みさせる)。
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] コードビハインドでASP.NetページのURLを取得する [重複]。
-
[解決済み] ウェブサイトを展開します。500 - 内部サーバー エラー
-
[解決済み] Response.Redirect()を呼び出すと「Cannot redirect after HTTP headers have been sent」と表示されるのですが、なぜでしょうか?
-
[解決済み] Visual Studio 2010 Professionalで、要求された.Net Frameworkデータプロバイダーが見つからない。
-
ASP.NETでRadioButtonコントロールを使用する
-
[解決済み] ASP.NETエラー:このページの状態情報は無効であり、破損している可能性があります。
-
[解決済み] <modules runAllManagedModulesForAllRequests="true" /> 意味
-
[解決済み] プリコンパイルされた ASP.NET ウェブサイト プロジェクトで、ファイルまたはアセンブリ App_Web_ * を読み込めなかった
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ASP.NETとWeb Tools 2015のインストール後、Visual Studioエラー「オブジェクトの参照がオブジェクトのインスタンスに設定されていません」が発生する。
-
[解決済み] ASP.NETのセッションが期限切れ、または見つからなかった → Session.SessionIDが変更されたため(Reporting Services)
-
[解決済み] パフォーマンスカウンターにアクセスすると「レジストリキー'Global'へのアクセスは拒否されました」と表示される。
-
[解決済み] ASP.Net - App_Data & App_Code フォルダ?
-
[解決済み] jquery の post 呼び出しから asp.net ページに html マークアップを送信する際に、潜在的に危険な Request.QueryString 値がクライアントから検出されました。
-
[解決済み] Response.Redirect()を呼び出すと「Cannot redirect after HTTP headers have been sent」と表示されるのですが、なぜでしょうか?
-
[解決済み] このコンテキストでは、リクエストは利用できません
-
$.ajax access backend 500 (Internal Server Error)
-
Asp.NET ラジオボタンの使用方法
-
[解決済み】.NETのバージョンを調べるにはどうしたらいいですか?