Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将MSBuild与TFS和SSI一起使用_Tfs_Ssis_Msbuild - Fatal编程技术网

如何将MSBuild与TFS和SSI一起使用

如何将MSBuild与TFS和SSI一起使用,tfs,ssis,msbuild,Tfs,Ssis,Msbuild,我是使用TFS构建定义和MSBuild脚本的完全新手 我想自动化我的SSIS构建和部署,并创建一个构建定义,该定义将在我排队时构建和部署我的SSIS项目 我发现这个项目: 它允许您创建一个DLL,您可以将其放置在C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateSassemblies 然后,您可以在visual studio命令行中使用某些参数调用SSIS.MSBuild.proj(请参见end): MSBu

我是使用TFS构建定义和MSBuild脚本的完全新手

我想自动化我的SSIS构建和部署,并创建一个构建定义,该定义将在我排队时构建和部署我的SSIS项目

我发现这个项目:

它允许您创建一个DLL,您可以将其放置在
C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateSassemblies

然后,您可以在visual studio命令行中使用某些参数调用SSIS.MSBuild.proj(请参见end):

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项目

问题:

  • 我如何使用它以使其自动化,从而可以从VS/TFS中手动启动构建和部署?使用生成定义

  • 如何确保选择了正确的配置和正确的目标服务器?例如,我们有针对DEV、SIT、SYS、UAT和PRD的SSIS配置。每个服务器都有自己的服务器名。我是否需要为每个环境使用单独的构建定义,或者是否有一种方法可以使用一个构建定义

  • 在使用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 : error MSB1008: Only one project can be specified.
    Switch: C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj
    
    For switch syntax, type "MSBuild /help"
    

    我认为你对这个解决方案的看法相当接近。您可以在控制台应用程序中调用您的包,并在其中设置变量。对于不同的开发、SIT、SYS、UAT、PRD。您可以拥有控制台应用程序的配置文件。然后您可以在控制台应用程序中设置包变量。我希望它能解决这个问题。尽我所能理解


    如果这与您的问题无关,请让我知道,然后再进一步解释您的问题。

    要回答您的问题,最好的方法是为您的团队构建使用UpgradeBuildTemplate

    修改构建脚本以调用在构建的“AfterCompile”目标中创建的任务。见下文


    您可以在团队生成定义中传递生成参数。若编辑生成定义和编辑过程,将看到传递MSBuild参数的选项

    在生成过程模板编辑器中,是否传入MSBuild参数?我在运行生成定义时遇到此错误:MSBuild:错误MSB1008:只能指定一个项目。开关:C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj错误是当我在我的MSBuild参数中尝试这一行时:“C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj”/t:SSISBuild,SSISDeploy/p:ssiproj=“MySSISProject”,Configuration=“sition”,ssiserver=“AB-CDE-FGH-I1\DEV”,ProjectName=“mysproject”
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj/t:SSISBuild/p:SSISProj=“MySSISProject”,Configuration=“SIT”
    提供指向.NET Framework的显式路径,这是否改善了情况。是否需要在TFS生成定义MSBuild参数中添加命令MSBuild.exe?我会试试看……好的,我会这样做,当用户签入代码时,Joe它会知道是否使用SIT、SYS等吗?例如,如何自动执行,或者必须手动执行。您可以使用SIT、SYS等的手动生成触发器将其默认为开发人员。通常,每个签入都需要一个BVT,您可以使用CI生成触发该BVT。您可以做出部署构建以进行系统集成测试或系统测试的明智决定,您可以手动触发构建
    MSBUILD : error MSB1008: Only one project can be specified.
    Switch: C:\Users\me\Desktop\Buildssis\SSIS.MSBuild.proj
    
    For switch syntax, type "MSBuild /help"