如何在TFS Build Server上启用Azure项目的包创建

时间:2012-04-09 15:11:11

标签: tfs azure cloud tfsbuild

我正在使用WebRole Azure项目,并且我计划在我的解决方案构建成功后在TFS Build服务器上生成包。

以下是我的解决方案的简要说明:

  1. 网络应用程序。
  2. TDD方法随后在开发中。
  3. 1个网络角色。
  4. 两种配置(云和本地)
  5. 基于ACS的验证。
  6. 从Visual Studio我使用PACKAGE命令创建包。

    在运行PACKAGE命令时,我选择以下内容:

    1. 服务配置:云端。
    2. 构建通信:发布。
    3. 选中:启用远程桌面。
    4. 使用与Visual Studio中使用的相同设置在TFS Build服务器上创建包的过程是什么?

      感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以将msbuild CorePublish目标用于此目的。 (参见例如this blog post

作为安全性最佳实践,在源树中启用了远程桌面,但实际的证书,远程桌面设置不在那里,并通过在部署期间更改配置来添加。 构建配置只是按预期运行,ServiceConfiguration风格最终将作为单独的cscfg文件。

答案 1 :(得分:1)

我们有一个所有项目都包含的Common.Targets,包括.ccproj。它有:

<Import Project=".\AzurePackages.Targets" Condition=" '$(CloudToolsVersion)' != '' And '$(BuildingInsideVisualStudio)' != 'true'"/>

AzurePackages.Targets(略有编辑):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
  <!-- Create Azure packages -->
  <PackageName>$(AssemblyName).cspkg</PackageName>
  <AzurePackageDir>$(OutDir)Packages\$(AssemblyName).Azure\</AzurePackageDir>
</PropertyGroup>

<Target Name="CopyPackageToOutDir" AfterTargets="Build" DependsOnTargets="CorePublish" Condition="'$(InRecursiveCall)' == ''">
  <Copy SourceFiles="@(PublishServicePackage)" DestinationFolder="$(AzurePackageDir)" />
</Target>

至于配置,我们希望在每个包附近有多个.cscfg,因此我们决定在部署时采用哪一个.cscfg。我们有一个解决方案,但它对于一个问题来说太复杂了。