我一直在与new u-sql msbuild support一起冒险,在“预览版”的土地上与巨龙战斗。
我意识到很多陷阱是由于发现在VS2017 v.s中运行版本之间存在不一致之处。从命令行运行msbuild。
根据我的更好判断,我通过直接更改nuget下载添加了一些诊断消息: \ packages \ Microsoft.Azure.DataLake.USQL.SDK.1.3.1019-preview \ build \ runtime \ USqlSDKBuild.targets
我现在意识到USQLSDKPath不会覆盖Visual Studio中使用的版本。
在撰写本文时,Visual Studio不支持USQLTargetType *。
*如果您想在不检查现有模式对象的情况下编译脚本,则需要USQLTargetType,以避免出现麻烦的情况。
我在计算机上找到的版本是:
我可以假定AppData中的第一个是Visual Studio安装的一部分,第二个是Visual Studio extension from the marketplace吗?
我已经在各种元素上作战了几天,所以想知道其他人在这个方向上走了多远?我也意识到这是在预览模式下,所以边缘很粗糙。
我可以安全地更改:
<Import Project="UsqlSDKBuild.targets" Condition="'$(BuildingInsideVisualStudio)' != 'true' And Exists('UsqlSDKBuild.targets')" />
<Import Project="$(USQLSDKPath)\UsqlSDKBuild.targets" Condition="'$(BuildingInsideVisualStudio)' != 'true' And !Exists('UsqlSDKBuild.targets') And '$(USQLSDKPath)' != '' And Exists('$(USQLSDKPath)\UsqlSDKBuild.targets')" />
<!-- backward compatible with IDE build -->
<Import Project="$(AppData)\Microsoft\DataLake\MsBuild\1.0\Usql.targets" Condition="'$(BuildingInsideVisualStudio)' == 'true'" />
是否也要在IDE中强制使用更高版本?
答案 0 :(得分:0)
目前强迫Visual Studio使用nuget下载的USQL SDK似乎不可行。
即使我删除了usqlproject底部的所有语句并调整了USqlSDKBuild.targets,也可以无错误地加载项目(UsingTask存在问题)。...
我发现Visual Studio正在覆盖 USQLSDKPath到:
USQLSDKPath ='C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ ADL Tools \ 2.3.3000.5 \ U-SQLSDK'
意味着我无法可靠地使用nuget版本。
在同一目录中,我确实注意到了“ USql DB Project.targets”(听起来像即将到来的新项目类型),并且USqlSDKBuild.targets具有更多选项。两者都表明nuget软件包实际上早于扩展程序的SDK。
我正在考虑与Visual Studio扩展捆绑在一起的功能实际上比nuget版本新!
编辑
在总结了不同的版本之后,我回到了基础上-嗯-意识到nuget包已经过时了!
我犯了这个错误,因为u-sql项目在Visual Studio中不支持nuget,因此我需要手动将其添加到packages.config,并将其硬编码为“ Microsoft.Azure.DataLake.USQL.SDK。 https://blogs.msdn.microsoft.com/azuredatalake/2017/10/24/continuous-integration-made-easy-with-msbuild-support-for-u-sql-preview/
中提到的1.3.1019-preview”我错误地认为该博客文章是最新的,因为它被链接到相对较新推广的spring 2018 release notes中。但是仔细检查博客帖子显然要早于发行说明。我的代码不好累。