2017-03-10 22 views
3

Visual Studio 2017(RTM)で新しい.NETコアコンソールアプリケーションを作成しました。その後、Dockerサポートが追加され、ドッカーファイル+ファイルの作成が正常に行われました。しかし、問題はほとんどありません。クライアントのバージョン1.22は古すぎる:.NET Core ConsoleアプリケーションをDockerに組み込む

ドッカー構成するファイルは、ビルドが

Microsoft.DotNet.Docker.CommandLineClientExceptionは、次のエラーメッセージに失敗しますバージョン2を持っています。サポートされている最小APIバージョンは1.24です。クライアントを新しいバージョンにアップグレードしてください。

これは、手動で作成ファイルのバージョンを2.1に変更することで修正できます。

MSB4006ターゲット "DockerCleanServiceReferences"を含むターゲット依存グラフに循環依存があります。

これはどのように修正するかわかりません。エラーメッセージは、循環参照の原因となる設定(例:ビルドするポストビルドイベント)のためです。

.NET Coreコンソールアプリケーションをドッキング用のコンテナに手動でパッケージ化する方法については、私はDockerを知るようになっているので、私はそれについて何も知らないと仮定しないでください。

これらのVisual Studioテンプレートの更新版を入手できるか、またはこれらの既知の問題がありますか?

答えて

2

DockerFile、SLNファイル、およびCSPROJファイルがすべて同じフォルダにあるという問題が判明しました。ソリューションの作成時に、サブディレクトリを作成するかどうかを尋ねる方法を知っていますか? でなく、SLNとCSPROJファイルが同じフォルダを共有している場合は、Dockerファイルがこの同じフォルダに追加され、循環参照が作成されます。 SLNファイルがCSPROJファイルの上にあるディレクトリにある場合、DockerFileなどはSLNファイルの親ディレクトリに置かれ、すべて正常に動作します。これは私のためにそれを解決しました。

+2

ありがとう!これで問題は解決しました。 –

+0

私はサブディレクトリの作成にyesと言いました。私の.slnは.csprojの上のフォルダにありますが、Dockerfileはcsprojと同じフォルダに作成されています –

2

あなたのDocker for WindowsがLinuxをターゲットにしているか確認してください。おそらく.NETコンテナではサポートされていないWindowsコンテナをターゲットにしていた可能性があります。

+1

私はDocker for Windowsをターゲットにしていましたが、Linuxに変更して実際のビルドエラーを変更しませんでした。循環依存性についてはまだエラーが発生しています。また、compose-versusrelease/debug.ymlファイルにはラベルが付いています... targetoperationsystem = linux –

-2

ありがとうございます。私たちはNano Serverコンテナツールをすぐに追加します。それまでは、Linuxコンテナで同様の経験をすることができます。

+1

Davidの答えに対する私のコメントを見てください。 Linuxに切り替わってもまだ動作していませんか?私は何か他に何かする必要がありますか? –

+0

私はデフォルトでLinuxコンテナを持っていましたが、このエラーが発生しました.Windowsコンテナへの切り替えを試みましたが、変更はありません。 – codeMonkey

0

.NET CoreコンソールアプリケーションをDockerイメージに手動でパッケージ化する方法に関するご質問については、 https://github.com/dotnet/dotnet-docker-samplesは、まさにその疑問に答えることを意図しています。それらをチェックしてください。問題が発生したり、提案がある場合は、問題(https://github.com/dotnet/dotnet-docker-samples/issues)を記録してください。

0

ドッカーでVS2017の最初の回転で、既定のテンプレートを使用して、私は同じ問題に走った。 私はこの記事を参考にしました - https://blogs.msdn.microsoft.com/containerstuff/2017/03/13/visual-studio-2017-client-version-1-22-is-too-old/ これは私にとってはうまくいきました - お勧めのように、ドッカーの作成プロジェクトのdocker-compose.ci.build.ymlでこの変更を行いました: ファイルの先頭にある 'version'パラメータに設定され、2に変更された。

ドッキングウィンドウ-compose.yml

ドッキングウィンドウ-compose.override.yml

ドッキングウィンドウ-compose.vs.debug.yml

:1 は含めて、プロジェクト内の他のファイルに同じ変更を繰り返し

docker-compose.vs.release.yml

関連する問題