USQL msbuild-复合生成输出

USQL msbuild-复合生成输出,msbuild,azure-pipelines,u-sql,Msbuild,Azure Pipelines,U Sql,我正在按照此链接上的说明进行操作 它说 从命令行或作为VSTS任务运行MSBuild后,将生成U-SQL项目中的所有脚本,并将其输出到“Build output path/script name/script name.usql”处的单个文件中。您可以将此复合U-SQL脚本复制到发布文件夹中,以便进一步部署 在我的Visual Studio项目(.usqlproj)中,我有多个.usql脚本 CreateDatabase.usql CreateTable.usql CreateTvf.usql

我正在按照此链接上的说明进行操作

它说

从命令行或作为VSTS任务运行MSBuild后,将生成U-SQL项目中的所有脚本,并将其输出到“Build output path/script name/script name.usql”处的单个文件中。您可以将此复合U-SQL脚本复制到发布文件夹中,以便进一步部署

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

  • CreateDatabase.usql
  • CreateTable.usql
  • CreateTvf.usql
当我执行clean和msbuild,然后检查bin\debug文件夹时,我得到的只是CreateDatabase.usql,其中只有createdatbase语句。根据我的博客,我本以为所有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 tools 2.3.0000.1


我做错了什么?

命令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,usqltargetype=Merge
实际生成您选择的脚本

如果在VS中选择
CreateDatabase.usql
,它将在命令行中构建脚本
CreateDatabase.usql

如下面的示例所示,由于它选择了
test.usql
,所以在执行msbuild命令时,它将只生成
test.usql
。单击USQL项目的Build按钮

如果要生成USQL项目下的所有脚本,应在VS中选择生成所有脚本按钮


由于某些遗留原因,为了确保生成usqlproj中的所有文件,在中定义了条件 USqlSDKBuild.targets如下


对于当前的预览版本,请在命令行中添加“/property:Build\u all\u files\u in\u this\u project=true,JustOneFile=''”以确保生成所有脚本。我们将在以后的版本中以更简单、更容易的条件更新此脚本。

1)是的,右键单击“生成所有脚本”将在此项目中生成所有文件。如何在msbuild命令行中获得相同的行为?2) 正如在博客中提到的,这还没有生成一个复合U-SQL脚本——我可以在发布和进一步部署中使用它。实际上,它正在bin\Debug文件夹中生成3个不同的.usql脚本。还是我误解了博客?文章还说“在”buildoutput path/script name/script name.usql“处输出到单个文件”。为了正确理解它,我在文章下面添加了一条评论,你可以跟进。这里似乎对“合并”目标有误解。“合并”的目标不是将当前目录中的所有U-SQL脚本合并到一个较大的脚本中。相反,它是“编译隐藏在文件后面的代码,如.cs,并将生成的用户定义代码库内联到U-SQL脚本中。”因此,如果project中有3个U-SQL脚本,则合并的编译结果将是3个目标文件夹中的3个不同文件。