【问题标题】:Varying usql msbuild targets改变 usql msbuild 目标
【发布时间】:2018-06-19 13:57:51
【问题描述】:

我一直在与new u-sql msbuild support 一起冒险,在“预览版”的土地上与龙战斗等。

我意识到许多问题是由于发现在 VS2017 与在 VS2017 中运行构建之间存在不一致。从命令行运行 msbuild。

根据我的更好判断,我通过直接更改 nuget 下载添加了一些诊断消息: \packages\Microsoft.Azure.DataLake.USQL.SDK.1.3.1019-preview\build\runtime\USqlSDKBuild.targets

我现在意识到 USQLSDKPath 不会覆盖 Visual Studio 中使用的版本。

在撰写本文时,Visual Studio 不支持 USQLTargetType*。

如果您想在不检查预先存在的模式对象的情况下编译脚本,则需要*USQLTargetType,以避免先有鸡还是先有蛋的情况。

我在我的机器上找到的版本是:

  1. C:\Users[用户名]\AppData\Roaming\Microsoft\DataLake\MsBuild\1.0\
  2. C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\ADL Tools\2.3.3000.5\
  3. 还有一个通过 nuget 安装的相对于我的 sln。

我可以假设 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 中强制使用更高版本?

【问题讨论】:

    标签: msbuild u-sql


    【解决方案1】:

    目前,强制 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 版本。

    在同一个目录中,我确实注意到“USqlDBProject.targets”(听起来像是即将推出的新项目类型)并且 USqlSDKBuild.targets 有更多选项。两者都表明 nuget 包实际上比扩展的 SDK 旧。

    我正在考虑与 Visual Studio 扩展捆绑在一起的版本实际上比 nuget 版本更新!


    编辑

    在半断定有不同的版本在起作用之后,我回到了基础并且 - doh - 意识到 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。但是仔细检查博客文章显然早于发布说明。我对编码不好累。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2013-07-24
      相关资源
      最近更新 更多