4

我目前正在运行 CI 构建和部署,使用 TFS 2013 进行构建,使用 Release Management 2013 进行部署,但我需要对我正在部署的 Web 应用程序 (WebForms) 进行预编译。我希望在将输出复制到放置位置之前使用发布配置文件来驱动预编译,但我还没有找到任何能够做到这一点的东西。

在找到如何配置 MSBuild 以使用已保存的 publishProfile 进行 WebDeploy 之后?,我在我的 Web 应用程序中设置了一个发布配置文件,如果我使用 msbuild.exe 使用 VS2013 的开发人员命令提示符,它将预编译 Web 应用程序

msbuild.exe WebSite.csproj /p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile

在https://stackoverflow.com/a/13267694/595473的帮助下发布名为 TfsPrecompile 的配置文件

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <PublishUrl>$(MSBuildProjectDirectory)\PublishDirectory</PublishUrl>
        <DeleteExistingFiles>True</DeleteExistingFiles>
        <PrecompileBeforePublish>True</PrecompileBeforePublish>
        <EnableUpdateable>False</EnableUpdateable>
        <DebugSymbols>False</DebugSymbols>
        <WDPMergeOption>DonotMerge</WDPMergeOption>
    </PropertyGroup>
</Project>

在本地运行 MSBuild,我最终将预编译的站点放在了一个新PublishDirectory文件夹中,一切似乎都进行得很顺利。

为了链接 TFS 和发布管理,我使用了 ReleaseTfvcTemplate.12.xaml 模板。

构建 > 项目:$/Insert_Directory_Here/WebSite.csproj

高级 > MSBuild 参数:/p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile

当我使用 MSBuild 参数运行构建时,与没有预编译参数的构建相比,九分钟左右的构建没有明显的时间差异。当我在本地运行 MSBuild 时,我看到对 ASPNETCOMPILER 的引用滚动,但我在任何 TFS 诊断日志中都没有看到对 ASPNETCOMPILER 或 aspnet_compiler 的引用。

4

2 回答 2

4

事实证明,构建框没有执行发布所需的所有目标,所以它只是忽略了它。

来自https://social.msdn.microsoft.com/Forums/vstudio/en-US/c2d10c74-ed44-4635-acb9-ab08612701e2/deployonbuild-not-working?forum=tfsbuild 的回答

最后!我有解决办法。无论是从 Team Build 部署还是直接使用 MSBuild,您都需要将 MSBuild 目标复制到您的构建机器上才能成功发布。

我们不会将 Visual Studio 安装到我们的构建机器上(浪费许可证) - 但是我们会安装 Visual Studio Shell。似乎 shell 安装了一些 MSBuild 目标——但不是全部——当然也不是 Publishing。

因此,在安装了 VS 的机器上,转到 C:\Program Files (x86)\MSBuild\Microsoft

将整个文件夹复制到您的构建机器并在那里替换相同的文件夹。也许先备份原件。你也可以准确地找出你真正需要的目标......

这为我修好了!

于 2014-11-23T18:26:44.220 回答
-1

我相信发布模板中有一个错误会影响网站的预编译方式。寻找使用默认模板,而不是手动添加 RM 位。

http://blogs.msdn.com/b/visualstudioalm/archive/2013/12/09/how-to-modify-the-build-process-template-to-use-the-option-trigger-release-from-构建.aspx

首先切换到默认模板并验证它是否如您所愿。然后按照上面的路径。

于 2014-11-22T07:51:21.823 回答