USQL msbuild - 复合构建输出
USQL msbuild - composite build output
我正在按照相关说明进行操作 link https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/
它指出
After running MSBuild from command line or as a VSTS task, all scripts in the U-SQL project are built and output to a single file at "Build output path/script name/script name.usql". You can copy this composite U-SQL script to the release folder for further deployment.
在我的 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
我做错了什么?
命令 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
实际上构建了您 select 编写的脚本。
如果您在 VS 中 selecting CreateDatabase.usql
,它将在命令行中构建脚本 CreateDatabase.usql
。
如下例,由于是selecting test.usql
,执行msbuild命令时,只会构建test.usql
。就像点击 USQL 项目的 Build 按钮一样。
如果你想构建USQL项目下的所有脚本,你应该select构建所有脚本按钮VS.
由于一些遗留原因,为了确保构建 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>
对于当前的预览版,请在命令行中添加“/属性:Build_all_files_in_this_project=true,JustOneFile=''”以确保构建所有脚本。我们将在以后的版本中使用更简单的条件对其进行更新。
我正在按照相关说明进行操作 link https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/
它指出
After running MSBuild from command line or as a VSTS task, all scripts in the U-SQL project are built and output to a single file at "Build output path/script name/script name.usql". You can copy this composite U-SQL script to the release folder for further deployment.
在我的 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
我做错了什么?
命令 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
实际上构建了您 select 编写的脚本。
如果您在 VS 中 selecting CreateDatabase.usql
,它将在命令行中构建脚本 CreateDatabase.usql
。
如下例,由于是selecting test.usql
,执行msbuild命令时,只会构建test.usql
。就像点击 USQL 项目的 Build 按钮一样。
如果你想构建USQL项目下的所有脚本,你应该select构建所有脚本按钮VS.
由于一些遗留原因,为了确保构建 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>
对于当前的预览版,请在命令行中添加“/属性:Build_all_files_in_this_project=true,JustOneFile=''”以确保构建所有脚本。我们将在以后的版本中使用更简单的条件对其进行更新。