【问题标题】:VSTS private agent VSBuildVSTS 私有代理 VSBuild
【发布时间】:2017-05-21 06:46:46
【问题描述】:

我有一个分析服务项目和 USQL 项目的解决方案。我的机器上安装了 VS2015 社区。该解决方案在我的机器上构建完美。接下来我想为我的解决方案配置 VSTS CI。我尝试使用托管代理,但抱怨它找不到如下程序集:

  1. 无法构建 obj\x86\Development\Model.asdatabase。原因:无法加载文件或程序集 'Microsoft.AnalysisServices.AppLocal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

  2. 错误 MSB4062:无法从程序集 Microsoft.Cosmos.ScopeStudio.VsExtension.CompilerTask 加载“Microsoft.Cosmos.ScopeStudio.VsExtension.CompilerTask.USqlCompilerTask”任务。无法加载文件或程序集“Microsoft.Cosmos.ScopeStudio.VsExtension.CompilerTask”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。

我认为这可能是因为托管代理没有实用程序/配置来构建分析服务和 usql 项目。
所以我决定使用我的机器作为私有 VSTS 代理来构建项目,因为它已经安装了所有工具并且正在从 Visual Studio 中成功构建解决方案。
然而,即使在使用我的机器作为构建代理之后,它也会显示相同的错误。我正在使用 VSBuild。

所以我的问题:

一个。为什么 VSBuild 在可以从已安装的 VS2015 实例构建项目的私有机器上运行时无法确保构建良好?
机器环境应该已经设置了所有必需的工具/库和配置,因此这些应该没有问题。

b.如果上述方法不起作用,那么通常如何配置私有代理来处理开箱即用的托管代理不支持的情况?

c。在使用 VSBuild 时如何解决这些错误有什么建议吗?

任何帮助将不胜感激!

【问题讨论】:

    标签: azure-pipelines u-sql azure-analysis-services


    【解决方案1】:

    请通过以下步骤解决问题:

    1. 在您的本地计算机上使用 VS 2015 构建您的项目,以确保它可以成功构建。
    2. 确保您正在使用机器上配置的专用代理进行 VSTS 构建。您可以通过查看构建日志进行仔细检查,并检查本地路径是您配置私有代理的位置。
    3. 在 Visual Studio Build 任务中,请确保您使用的 visual studio 版本是 VS 2015。

    【讨论】:

    • 抱歉耽搁了,因为我被严重卡住了。谢谢,我检查了详细信息,并且正如您提到的那样,它们已正确设置。事实上,除了分析服务项目和 usql 项目之外,所有项目都在构建中。由于我在我的私人代理上使用 VSBuild 而不是 MSBuild,它也加载了 Visual Studio,我希望 VSBuild 能够在内部触发 Visual Studio 构建 - 所以在 Visual Studio 上成功构建应该确保使用 VSBuild 成功构建。但事实并非如此。 VSBuild 优于 MSBuild 的价值是什么?使用VSBuild时是否不需要在构建机器上安装Visual Studio?
    【解决方案2】:

    很抱歉,目前usqlproj只能在VisualStudio环境中构建。尚不支持独立的 MSBuild。

    在我们未来有一个可行的解决方案之前,这里唯一的选择就是使用 U-SQL SDK 直接构建 U-SQL 脚本。

    https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-sdk

    非常感谢, 于冬

    【讨论】:

    • 感谢您的信息。我正在测试它。对不起,我是 USQL 的新手,并且有一个查询可能有点天真。当我构建 USQL 查询时,我看到后面的代码被编译为 dll 并注册到环境的本地数据湖目录集中。在这个构建过程中究竟发生了什么?在我们的例子中,我们不使用后端 C# 代码,只使用普通的 USQL 脚本作为过程。我们开发了将在发布管道期间调用的 powershell 脚本,以将脚本作为程序部署到目标目录。在这种情况下,脚本的单独构建步骤是否有任何价值?
    • 只有在源文件的代码中包含“类”字符串时,才会构建 C# 代码背后的代码。使用临时程序集注册然后删除,因此当作业运行成功时不应在本地元数据存储中留下痕迹。
    • 感谢您的回复。很抱歉延迟确认,因为我有点忙于其他可交付成果... 几个问题 - a) 无论如何要一次构建多个 usql 文件?我发现 -script 参数一次需要一个文件。 b) 再次回到最初的问题,因为我使用的是 VSBuild 而不是 MSBuild,所以我希望构建成功,因为它将使用与机器上的 Visual Studio 设置相同的环境进行构建。对于 VSTS 私有代理,VSBuild 是否使用与构建机器上的 Visual Studio 环境相同的环境?
    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多