web-dev-qa-db-ja.com

asp.netコア2.0パブリッシュオフロットを生成DLL

数か月間1つのアプリケーションをプログラミングし、プロジェクトを公開するたびに、tisは19個のアイテムを生成しました(wwwrootファイルなし)。そして今日から、多くの.dll(wwwrootファイルなし)を含む202個のファイルが生成されます。何が起こったのか、何をしたのかわかりません。 .NET Core 2.0を使用するアプリケーション。私のプロジェクトに関するどのような情報が関連しているかわかりません。とりあえず81/202ファイルはMicrosoft.AspNetCoreライブラリのみであり、43/202ファイルはMicrosoft.Extensionsライブラリのみです。 obj、bin、properties、node_modulesを削除してみましたが、それでも同じ問題が発生しました。多くのファイルから以前に生成されたファイルのみをアップロードした後、すべてが機能しました。私はそれが必要な.dllではないと思いますが、なぜasp.netがまだそれらを生成しているのか分かりません。アドバイスありがとうございます。

編集:

これは、この質問にコメントしたユーザーの1人からのリクエストによって追加されたパブリッシュの出力、依存関係、およびパブリッシュの出力の大きなスクリーンショットです。 enter image description here

編集:

パブリッシュプロパティを自己完結型デプロイメントからフレームワーク依存型デプロイメントに変更した後、新しいエラーが発生し、出力から新しいエラーが発生します。

C:\Program Files\dotnet\sdk\2.1.400-preview-009063\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(125,5): Error NETSDK1068: The framework-dependent application Host requires a target framework of at least 'netcoreapp2.1'.

編集:

今私は新しいプロジェクトasp.netコア2.0を作成して公開してみました。同じ問題。私のSDKに問題があるか、わかりません。

解決:

ターゲット2.1で新しいプロジェクトを作成し、すべてのソースファイルを移動しました。いくつかのエラーを解決した後、すべてが正常に動作します。

9

Visual Studio 15.8.2では、私にもこの問題がありました。残念ながら、内部で管理されている展開済みサーバーにはランタイムバージョンの制限があるため、アプリケーションを単純にアップグレードすることはできませんでした。したがって、最新のSDKバージョン(2.1.401)でビルドできますが、アプリケーションがデプロイされている場所には、古いSDKバージョン(2.1.100)があります。

.NET Core 2.0のSDKとランタイムバージョンの相関は、 ここ で確認できます。

私の問題はこうして明らかになりました:ビルドと再ビルドは成功しましたが、パブリッシュはエラーメッセージError NETSDK1068: The framework-dependent application Host requires a target framework of at least 'netcoreapp2.1'.で失敗しました here から、デフォルトでは最新のインストール済みバージョンを使用することを学びました。

.NET Core 2.0以降、使用するSDKのバージョンを決定する際には、次のルールが適用されます。

  • Global.jsonファイルが見つからない場合、またはglobal.jsonでSDKバージョンが指定されていない場合は、インストールされている最新のSDKバージョンが使用されます。 SDKの最新バージョンは、リリースまたはプレリリースのどちらでもかまいません-最も大きいバージョン番号が優先されます。 (強調を追加)

この同じ記事で、global.jsonファイルを使用してこのエラーに対処する方法を学びました。私はgit-bashを使用して、公開しようとしたWebアプリケーションのローカル作業ディレクトリにcd 'dしました。対応するcsprojファイルはこのディレクトリにあるはずです。ここから私は以下を実行しました:

dotnet new globaljson --sdk-version 2.1.100

これで、次のパブリッシュ構成設定を使用できます。-構成:リリース-ターゲットフレームワーク:netcoreapp2.0-デプロイメントモード:フレームワーク依存-ターゲットランタイム:ポータブル

5
gregsonian

これは、.NET Core SDKバージョン2.1.400で導入されたバグが原因です。参照 フレームワーク依存パブリッシュは2.1.400#9852では機能しません

回避策があります-コマンドラインを介して公開し、引数--self-contained falseを渡します。

例:

dotnet publish -f netcoreapp2.0 -c Release --self-contained false

6
SausageFingers

自己完結型デプロイメント のパブリッシュモードを選択しただけで、ファイルの大部分は分離されたランタイムを実行するために必要なライブラリだけです。再びいくつかのファイルに戻るには、フレームワークに依存したデプロイメント(同じドキュメントで説明)を進めるだけです。

3
Ph0en1x