【问题标题】:Visual Studio ASP.NET Web API Precompiled files placed in a different folder with TFSVisual Studio ASP.NET Web API 预编译文件放置在与 TFS 不同的文件夹中
【发布时间】:2016-12-20 23:38:07
【问题描述】:

我有一个 asp.net web api 项目,其输出需要使用 wix 打包到安装项目中。

我想预编译网站。问题是预编译过程会生成可变文件名(即特别是 *.compiled 文件)。

我还想在 TFS 构建中构建设置。

看来我唯一的选择是在 wix 项目的预构建步骤中生成一个 .wxs 文件。

.wxs 文件源路径使用 $(var._My_Web_Project_.TargetDir)。这似乎被翻译成基于 Sources 的目录。

我已经在使用paraffin 来执行此操作,并且在使用 Visual Studio 构建解决方案时它工作得非常好。

当通过 TFS 构建构建解决方案时,.compiled 文件被复制到 Binaries 文件夹,而所有其他相关的网站文件被复制到 strong>Sources 基于目录。

构建错误如下:

系统找不到文件'd:\BuildAgents\___basedir___\Binaries\___web_project_dir\_PublishedWebSites\___site___\bin\textsample.cshtml.c6fb271c.compiled'。

该文件确实在 Sources 目录中。

'd:\BuildAgents\___basedir___\Sources\___web_project_dir\_PublishedWebSites\___site___\bin\textsample.cshtml.c6fb271c.compiled'

我想我需要重新定义 aspnet_compiler 输出或类似的东西,但不知道该怎么做。

msbuild 命令行参数如下:

/p:GenerateProjectSpecificOutputFolder=true /p:VisualStudioVersion=14.0 /p:DeployOnBuild=true /p:PublishProfile=local /p:CleanWebProjectOutputDir=False /verbosity:d

编辑 1:我正在使用 XAML 构建

任何帮助表示赞赏。

编辑 2: 使用基于新任务的构建,它可以按原样工作(无需使用额外的复制文件任务)。

aspnet_compiler 将 .compiled 文件输出到正确的文件夹中:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\BuildAgents\vNext\_work\1\s\Softs\__Solution__\__Web_Project\obj\Release\AspnetCompileMerge \Source -c D:\BuildAgents\vNext\_work\1\s\Softs\__Solution__\__Web_Project__\obj\Release\AspnetCompileMerge\TempBuildDir

【问题讨论】:

  • 您使用 XAML 构建还是基于新任务的构建系统?您的构建定义如何?
  • 我正在使用 XAML 构建。

标签: wix tfs-2015 web-project paraffin


【解决方案1】:

在基于新任务的构建系统中,使用Copy Files 任务可以轻松地将文件从源文件夹复制到目标文件夹。

源文件夹:包含您要复制的文件的文件夹。

内容:指定要应用于要复制的文件列表的 minimatch 模式过滤器(每行一个)。

目标文件夹:文件将被复制到的文件夹。在大多数情况下,您使用变量指定此文件夹。

【讨论】:

  • 由于您使用的是 XAML 构建,因此您可以编写和签入脚本,并在 XAML 构建定义中指定构建后脚本路径。您可以参考此脚本 (tfsbuildextensions.codeplex.com/SourceControl/latest#Scripts/…),该脚本从典型位置收集一些典型的二进制类型,并将它们复制到 TFBuild 从中复制并拖放到您的暂存位置的文件夹。在网站上查看有关在 XAML 构建过程中运行脚本的更多信息:msdn.microsoft.com/library/dn376353%28v=vs.120%29.aspx
  • 顺便说一下,由于您使用的是TFS 2015,建议使用基于任务的构建系统,使用起来更简单灵活。
  • 谢谢我去看看
  • 解决方案确实是使用新的基于任务的构建系统。 aspnet_compiler 将文件输出到正确的文件夹中。无需使用额外的复制文件任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多