【问题标题】:TFS CI issue with a SSIS packageSSIS 包的 TFS CI 问题
【发布时间】:2011-11-16 00:07:14
【问题描述】:

构建于 2011 年 16 月 11 日上午 9:24:11 开始。 节点 1 上的项目“C:\Builds\1\NetTellerMigration\NetTellerMigrationBuild\Sources\blah.sln”(默认目标)。 验证解决方案配置: 构建解决方案配置“开发|默认”。 MSBUILD:警告 MSB4078:MSBuild 不支持项目文件“blah\blah.dtproj”,无法构建。 [C:\Builds\1\NetTellerMigration\NetTellerMigrationBuild\Sources\blah.sln] 完成构建项目“C:\Builds\1\NetTellerMigration\NetTellerMigrationBuild\Sources\blah.sln”(默认目标)。

构建成功。

“C:\Builds\1\NetTellerMigration\blahBuild\Sources\blah.sln”(默认目标)(1)-> (blah_b 目标)-> MSBUILD:警告 MSB4078:MSBuild 不支持项目文件“blah\blah.dtproj”,无法构建。 [C:\Builds\1\NetTellerMigration\NetTellerMigrationBuild\Sources\blah.sln]

1 Warning(s)
0 Error(s)

经过时间 00:00:00.42

我目前已经安装了 SqlExpress 的 tfs2010,并且我试图“不成功”地实现对 SSIS 包的持续集成。我的目标是创建由代码签入触发的构建。我有一个要执行的构建定义,但显示了上面显示的警告,并且没有将“.dtsx”文件复制到构建目录?

我相信这与针对 .net 框架 v4 的构建代理有关,但我可能是错的。无论如何,任何曾经遇到过这个问题的人都会非常感谢任何帮助。

【问题讨论】:

    标签: continuous-integration bids ssis


    【解决方案1】:

    MSBuild 无法构建 SSIS 项目 (.dtproj),因为这些项目的格式是 VS2010 之前的格式。最好的办法是让 MSBuild 外壳输出到 SSIS 项目。您可以创建一个空的 C# 项目来执行此操作。然后,在文本编辑器中打开新项目的 .csproj 文件,并将 BeforeBuild 目标设置为以下内容:

    <Target Name="BeforeBuild">
      <!-- Build the analysis SSIS project -->
      <Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\@InstallDir)\devenv.exe&quot; blah\blah.dtproj /Build" />
    </Target>
    

    为您的项目调整 blah/blah.dtproj 路径。这将运行 VS2008 版本的 devenv 来构建 SSIS 项目。

    以下是整个 .csproj 文件的示例:

    <?xml version="1.0" encoding="utf-8"?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build">
       <PropertyGroup>
          <OutputPath>Bin</OutputPath>
       </PropertyGroup>
       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
       <Target Name="BeforeBuild">
          <!-- Build the analysis SSIS project -->
          <Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\@InstallDir)\devenv.exe&quot; blah\blah.dtproj /Build" />
      </Target>
    </Project>
    

    【讨论】:

    • 有点小技巧。我正在尝试集成 CI 构建,如果我这样做,这将不起作用。一定有更优雅的方式?
    • 我同意,但我认为没有其他方法。 TFS 构建代理仅适用于 MSBuild 脚本。我假设下一个版本的 BIDS 中的项目文件将与 MSBuild 一起使用。你可以看看 SQL Server 2012 的最新 CTP。
    • 好的,谢谢布伦特。快速浏览了 2012 CTP,但功能规范中没有详细说明此特定问题。只能假定它的地址。再次感谢。
    • 花了几个小时试图找到替代解决方案后,我准备同意确实没有其他方法! :) 我实际上还没有在 tfs 服务器上安装 vs 2008,你知道是否有替代方法,因为我们缺乏 2008 许可证。是否有一个精简的可再发行组件,它暴露的足够多,可以使用 devenv 仅创建构建而不是创建完整安装。希望这是有道理的。再次感谢您帮助布伦特。
    • 如果您有 SQL Server 许可证(开发版),则可以安装它。它带有足够的 VS 2008 来构建 SSIS 项目。
    【解决方案2】:

    我不得不稍微调整一下我的目标才能让它发挥作用:

    <Target Name="BeforeBuild">
    <!-- Build the analysis SSIS project -->
    <Exec Command="&quot;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\@InstallDir)devenv.exe&quot; &quot;$(SolutionPath)&quot; /Build &quot;Release|Any CPU&quot; /project projectFileName.dtproj" />
    </Target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2017-06-09
      相关资源
      最近更新 更多