[英]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项目。
问题:
我如何使用它使其自动化,以便可以在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参数添加到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.