簡體   English   中英

如何在TFS和SSIS中使用MSBuild

[英]How to use MSBuild with TFS and SSIS

我是使用TFS Build定義和MSBuild腳本的完全新手。

我想自動化我的SSIS構建和部署,並創建一個構建定義,該構建定義將在我排隊時立即構建和部署SSIS項目。

我找到了這個項目: http : //sqlsrvintegrationsrv.codeplex.com/releases/view/82369

它允許您創建一個可以放置在C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\PrivateAssemblies的DLL

然后,您可以在Visual Studio命令行中使用諸如此類的某些參數調用SSIS.MSBuild.proj(請參見結尾):

MSBuild SSIS.MSBuild.proj /t:SSISBuild,SSISDeploy /p:SSISProj="MySSISProject",Configuration="DEV",,SSISServer="AB-CDE-FGH-I1\DEV",ProjectName="MySSISProject"

或者我可以將其放在BAT文件中,如下所示:

%systemroot%\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe SSIS.MSBuild.proj /t:SSISBuild,SSISDeploy /p:SSISProj="MySSISProject",Configuration="DEV",,SSISServer="AB-CDE-FGH-I1\DEV",ProjectName="MySSISProject"

當您運行BAT文件時,它工作正常,它會構建和部署SSIS項目。

問題:

  1. 我如何使用它使其自動化,以便可以在VS / TFS中手動啟動構建和部署? 使用構建定義。

  2. 如何確保選擇正確的配置和正確的目標服務器? 例如,我們具有針對DEV,SIT,SYS,UAT,PRD的SSIS配置。 每個都有自己的服務器名稱。 我是否需要為每個環境使用單獨的構建定義,或者是否可以使用一個構建定義?

  3. 以某種方式使用Powershell有什么用嗎?

這是SSIS.MSBuild.proj:

<?xml version="1.0" encoding="Windows-1252"?>
<Project  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
          DefaultTargets="SSISBuild;SSISDeploy">
  <!--Requires a property called $(SSISProj) to be defined when this script is called-->
  <UsingTask TaskName="DeploymentFileCompilerTask" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.SqlServer.IntegrationServices.Build.dll" />
  <Target Name="SSISBuild" Condition="'$(SSISProj)' != ''">
    <PropertyGroup>
      <SSISProjPath>$(SSISProj)\$(SSISProj).dtproj</SSISProjPath>
    </PropertyGroup>
    <Message Text="**************Building SSIS project: $(SSISProjPath) for configuration: $(CONFIGURATION)**************" />
    <DeploymentFileCompilerTask
      InputProject="$(SSISProjPath)"
      Configuration="$(CONFIGURATION)"
      ProtectionLevel="DontSaveSensitive">
    </DeploymentFileCompilerTask>
  </Target>

  <UsingTask TaskName="DeployProjectToCatalogTask" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.SqlServer.IntegrationServices.Build.dll" />
  <Target Name="SSISDeploy" Condition="'$(SSISProj)' != ''">
    <Message Text="**************Publishing SSIS project: $(SSISProj) to: $(SSISServer) to folder: $(PROJECTNAME)**************" />
    <PropertyGroup>
      <ISPac>$(SSISProj)\bin\$(CONFIGURATION)\$(SSISProj).ispac</ISPac>
    </PropertyGroup>
    <DeployProjectToCatalogTask
          DeploymentFile="$(ISPac)"
          Instance="$(SSISServer)"
          Folder="$(PROJECTNAME)"
          CreateFolder="true"/>
  </Target>
</Project>

編輯我嘗試將一些MSBuild參數添加到TFS構建定義中。 我嘗試了各種參數組合,有些帶有引號,有些沒有。 我無法正常工作。

"C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj" /t:SSISBuild,SSISDeploy /p:SSISProj="MySSISProject",Configuration="SIT",SSISServer="AB-CDE-FGH-I1\DEV",ProjectName="MySSISProject"

但是我總是會收到這個錯誤:

MSBUILD : error MSB1008: Only one project can be specified.
Switch: C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj

For switch syntax, type "MSBuild /help"

我認為您對解決方案非常了解。 您可以在控制台應用程序中調用程序包並在其中設置變量。 對於不同的DEV,SIT,SYS,UAT,PRD。 您可以擁有控制台應用程序的配置文件。 然后您可以在控制台應用程序中設置程序包變量。 我希望它解決了這個障礙。 據我所知。

如果這與您的問題無關,請告訴我,然后再多解釋一下您的問題。

要回答您的問題,最好的方法是為團隊構建使用UpgradeBuildTemplate。

修改生成腳本以調用在生成的“ AfterCompile”目標中創建的任務。 見下文

http://msdn.microsoft.com/zh-CN/library/aa337604(v=vs.100).aspx

您可以在團隊構建定義中傳遞構建參數。 如果您編輯構建定義並編輯過程,您將看到傳遞MSBuild參數的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM