USQL msbuild - 复合构建输出

时间:2017-11-13 17:27:41

标签: msbuild azure-pipelines u-sql

我按照此链接https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/

上的说明操作

它声明

  

从命令行运行MSBuild或作为VSTS任务后,将构建U-SQL项目中的所有脚本并将其输出到“构建输出路径/脚本名称/脚本name.usql”中的单个文件。您可以将此复合U-SQL脚本复制到release文件夹以进行进一步部署。

在我的Visual Studio项目(.usqlproj)中,我有多个.usql脚本

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

当我执行clean和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

我正在使用Visual Studio 2017 15.4.3和Azure Data Lake工具2.3.0000.1

我做错了什么?

2 个答案:

答案 0 :(得分:1)

由于一些遗留原因,为了确保构建usqlproj中的所有文件,将在中定义条件 USqlSDKBuild.targets如下      <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>

对于当前预览版,请在命令行中添加“/ property:Build_all_files_in_this_project = true,JustOneFile =''”以确保构建所有脚本。我们将在以后的版本中更新这个更简单,更简单的条件。

答案 1 :(得分: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项目的构建按钮的方式。

enter image description here

如果您想在USQL项目下构建所有脚本,则应在VS中选择构建所有脚本按钮。

enter image description here

enter image description here