2017-11-13 13 views
2

https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/USQLのMSBuildの - 私は、このリンクの指示に従ってだ複合ビルド出力

それはのように述べている

U-内のすべてのスクリプト、コマンドラインまたはVSTSのタスクとしてのMSBuildを実行した後SQLプロジェクトがビルドされ、 "Build output path/script name/script name.usql"という単一のファイルに出力されます。 この複合U-SQLスクリプトを今後の展開のためにリリースフォルダにコピーできます。私のVisual Studioプロジェクト内

(.usqlproj)私は複数の.usqlのスクリプトを持って

  • CreateDatabase.usql
  • CreateTable.usql
  • CreateTvf.usql

ときIきれいにしてmsbuildしてbin \ debugフォルダをチェックしてください。私が得るのはCreateDatabase.usqlだけです。そこにはCREATE DATBASE文しかありません。ブログごとに私は3つのusqlスクリプトが1つの複合usqlスクリプトにマージされていると思っていたでしょう。私は私のマシン上でコマンドプロンプトから実行MSBuildのコマンドは

msbuild TheProject\TheProject.usqlproj /t:Clean /t:Rebuild /property:USQLSDKPath=C:\TheProject\src\packages\Microsoft.Azure.DataLake.USQL.SDK.1.3.1019-preview\build\runtime,USQLTargetType=Merge 

は私が間違って何をやっている2.3.0000.1

のVisual Studio 2017 15.4.3とAzureのデータ湖のツールを使用していますか?

答えて

0

、必ずusqlproj内のすべてのファイルが構築されていることを確認するために、条件が現在の場合 <ItemGroup> <FileToBuild Condition="'$(JustOneFile)' == '' and '$(Build_all_files_in_this_project)' != 'true'" Include="$(ActiveFile)" /> <FileToBuild Condition="'$(JustOneFile)' != '' " Include="$(JustOneFile)" /> <FileToBuild Condition="'$(Build_all_files_in_this_project)' == 'true'" Include="Build_all_files_in_this_project" /> </ItemGroup>

以下のように USqlSDKBuild.targetsで定義されていますすべてのスクリプトがビルドされていることを確認するには、コマンドラインに "/ property:Build_all_files_in_this_project = true、JustOneFile = ''"を追加してください。より簡単で簡単な条件で、これ以降のリリースでこれを更新します。

0

コマンドmsbuild TheProject\TheProject.usqlproj /t:Clean /t:Rebuild /property:USQLSDKPath=C:\TheProject\src\packages\Microsoft.Azure.DataLake.USQL.SDK.1.3.1019-preview\build\runtime,USQLTargetType=Mergeは、実際に選択したスクリプトをビルドします。

VSでCreateDatabase.usqlを選択すると、コマンドラインにCreateDatabase.usqlというスクリプトが作成されます。

以下の例のように、test.usqlを選択しているので、msbuildコマンドを実行すると、test.usqlしか作成されません。途中でUSQLプロジェクトのビルドボタンをクリックします。あなたはUSQLプロジェクトの下にすべてのスクリプトを構築にしたい場合は

enter image description here

、あなたは、VSのすべてのスクリプトボタンビルドを選択してください何らかのレガシー理由

enter image description here

enter image description here

+0

1)はい、すべてのスクリプトをビルドするにはBuild_all_files_in_this_projectを右クリックします。** msbuildコマンドライン**で同じ動作をどうやって得るのですか? 2)ブログで言及されているように、それはまだ**複合U-SQLスクリプト**を作成していません。実際には、bin \ Debugフォルダに3つの異なる.usqlスクリプトが作成されています。それとも、私はそのブログを誤解しましたか? – databash

+0

この記事では、「ビルド出力パス/スクリプト名/スクリプト名.usql」で「**単一ファイルへの出力**」と書かれています。それを正しく理解するために、記事の下にコメントを追加しました。あなたはフォローアップできます。 –

+1

「マージ」ターゲットの誤解があるようです。 "マージ"ターゲットは、現在のディレクトリ内のすべてのU-SQLスクリプトを1つの大きなスクリプトにマージすることではありません。代わりに、 ".csのようなコードビハインドファイルをコンパイルし、結果として得られるユーザ定義のコードライブラリをU-SQLスクリプトにインライン化する"ことです。したがって、プロジェクトに3つのU-SQLスクリプトがある場合、マージされたコンパイル結果は、3つのターゲットフォルダ内の3つの異なるファイルになります。 –

関連する問題