2016-04-12 5 views
14

を使用して1つのステップで複数のDOTNETコアプロジェクトをコンパイル? (コマンドラインからではなく、Visual Studioで)はどのように1は<code>dotnet</code>を使用して両方のプロジェクトをコンパイルん</p> <pre><code>SampleApp global.json Src Web project.json Startup.cs ... Model project.json Startup.cs ... </code></pre> <p>このフォルダ構造を仮定しDOTNETのCLI

を使用すると、ルートフォルダレベルでdotnet buildを実行する場合は、

を取得したファイルが見つかりませんでした。.. project.json

私はそこに見ることができますCLIのrepoではthis outstanding enhancementですが、それはFeb2からです。

すべてのスクリプトは、のすべてのsrcサブフォルダで盲目的に呼び出す前に、依存関係を考慮する必要があります。

答えて

3

このようなツールはまだありません。 ASP.NETチームが使用するツールのKoreBuildでさえ、各フォルダで盲目的に行き、dotnet build/packを呼び出します。

いいことは、dotnet buildは、変更されていない場合でも依存関係を再コンパイルできないほどスマートなので、もう問題にはなりません。

+0

上記の例のように 'web'が' model'に依存すると、最初にモデルフォルダにビルドする必要はありませんそれはwebフォルダ内の 'dotnet build'だけで、' model'をコンパイルすることができます - – wal

1

私にも同様の要件がありました。これは私の回避策です:

@echo off 
for /D %%d in (*) do (
    cd %%d 
    cd 
    dotnet restore 
    dotnet build 
    cd .. 
) 
exit /b 
21

dotnet buildコマンドはグロブパターンを受け入れます。あなたはこれを行うことができます:

dotnet build Src/**/project.json 
+3

dotnet packはこれをサポートしていません(これを見て、同じテクニックを使用することを望む人のために) –

1

GNU Makeを使用してください。私は私のプロジェクトを構築するためにそれを使用します。あなたがする必要があるのは、プロジェクトのルートフォルダにMakefileを作成するだけです。ディレクトリにMakefileを入れ子にし、サブディレクトリを実行するトップレベルのMakefileを作成することができます。 "Sub Projects"フォルダごとにMakefileを設定し、任意のコマンドラインツールを実行します。 dotnet coreはdotnetです。

待ち... GNU - 「GNUはUnix/Linuxアプリケーションではありません...私はWindowsを実行します。うーん、良いニュースは、これをWindowsで行うことができるということです。私は私のgit-bashインストール(git for windows)を通してmake.exeを使用しています。 makeのcygwinポートを見つけなければなりません。 (google: "make for git-bash")そしてbinディレクトリのcygwinフォルダにインストールします。本当にしたいのであれば、cygwinをインストールすることもできます。

Gnu-Makeの使い方は、普遍的です。 dotnet coreはプラットフォームに依存しないため、Mac/FreeBSD/Linuxのすべての環境はすでにインストールされている可能性が高いです。あなたのWindowsマシンやプロジェクトに私を追加することは大変意味があります。あなたのプロジェクトは誰もが同じように構築できるようになりました。

私のプロジェクトのいくつかは、ドッカーファイルやスナップパッケージを使ってドッキング用のコンテナを構築し、テストなどに展開する必要があります。

ここに、単純なプロジェクトのMakefileのサンプルがあります。 'make'を単独で実行することは、 'make all'を実行すると 'cd ./subdir'のようなコマンドを設定できるようになります。あなたの.phoney指令の1つとして "make"を実行します。(Googleの "Makefile documentation")

関連する問題

 関連する問題