使用Web Deploy Package使用TFS 2017构建和部署Web应用程序

时间:2017-05-15 17:24:37

标签: web-applications deployment tfs continuous-integration release

我的问题与此类似

Build and Deploy a Web Application with TFS 2015 Build

但是,解决方案对我不起作用。我正在进行持续集成,我必须部署一个Web应用程序,以及其他网站,我不会在为部署创建.zip包时遇到问题。我正在使用/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.StagingDirectory)\\"

然后我使用Deploy IIS App在网站的虚拟目录中解压缩.zip包。

enter image description here

但是使用Web应用程序,无论我在MSBuild Arguments中使用什么参数都没有用,我也不想将项目中的所有文件复制到服务器,我想要一个不同的选项来删除从服务器发布后的.sln和其他文件。

我尝试/p:DeployOnBuild=True /p:PublishProfile=$(DeploymentConfiguration)并且我使用了作为Web Deploy Package创建的发布配置文件,但在工件构建之后我得到了相同的文件,我的意思是所有项目文件,包括.sln。

当我使用/p:DeployOnBuild=True /p:PublishProfile=$(DeploymentConfiguration)时,我不确定在工件中我应该期待什么,但我没有看到更改。

有人能解释一下我在这种情况下应该等些什么?以及如何使用TFS正确部署Web应用程序项目(因为当我使用.pubxml从Visual Studio发布工作正常时,在服务器中正在复制权限文件)并且想法是在构建和发布中TFS没有使用Visal Studio的任何手册。

任何想法和解释都会受到欢迎,谢谢。

2 个答案:

答案 0 :(得分:2)

在我查看构建定义的TFS选项之前没有任何工作,当你必须为定义选择一个模板时,你可以看到两个选项Build and Deployment,我选择了Build&#39的模板,但我试过了使用部署选项: enter image description here

,默认情况下,在MSBuild Arguments中,参数为:/p:OutDir="$(build.binariesdirectory)\\" enter image description here

在该文件夹中,我们拥有部署所需的一切。

答案 1 :(得分:1)

要将参数传递到MSBuild,您需要在项目属性文件夹下的PublishProfiles文件夹中有一个.pubxml文件(称为发布配置文件)。这就是使用/p:DeployOnBuild=true;PublishProfile=MyProfile作为msbuild参数的原因。更多详情请参阅此问题中的 Sayed Ibrahim Hashimi How do I configure MSBuild to use a saved publishProfile for WebDeploy?

如果您想生成工件,请确保您还使用Publish Build Artifacts构建步骤。复制构建的工件并将工件发布到服务器上的删除位置。这将是稍后选择Release的构建工件的位置。这些文件将位于暂存文件夹 - Build.StagingDirectory,如agent/_work/2/a

enter image description here

有关详细信息,请查看此主题Visual Studio Team Services Release Management IIS Web Deployment vnext