Visual Studio ASP.NET Web API 预编译文件放在与 TFS 不同的文件夹中
Visual Studio ASP.NET Web API Precompiled files placed in a different folder with TFS
我有一个 asp.net web api 项目,其输出需要使用 wix 打包到安装项目中。
我想预编译网站。问题是预编译过程会生成可变文件名(即 *.compiled 文件)。
我也想在 TFS 构建中构建设置。
看来我唯一的选择是在 wix 项目的预构建步骤中生成一个 .wxs 文件。
.wxs 文件源路径使用 $(var._My_Web_Project_.TargetDir)。这似乎被翻译成基于 Sources 的目录。
我已经在使用 paraffin 来做到这一点,并且在使用 visual studio 构建解决方案时它工作得非常好。
通过 TFS 构建构建解决方案时,.compiled 文件被复制到 Binaries 文件夹,而所有其他相关网站文件被复制到基于 Sources 的目录。
构建错误如下:
The system cannot find the file '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 build.
感谢任何帮助。
编辑 2:
使用基于新任务的构建,它按原样工作(无需使用额外的复制文件任务)。
aspnet_compiler 在正确的文件夹中输出 .compiled 文件:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\BuildAgents\vNext\_work\s\Softs\__Solution__\__Web_Project\obj\Release\AspnetCompileMerge\Source -c D:\BuildAgents\vNext\_work\s\Softs\__Solution__\__Web_Project__\obj\Release\AspnetCompileMerge\TempBuildDir
在新的基于任务的构建系统中,使用 Copy Files 任务可以轻松地将文件从源文件夹复制到目标文件夹。
Source Folder: Folder that contains the files you want to copy.
Contents: Specify minimatch pattern filters (one on each line) that you want to apply to the list of files to be copied.
Target Folder: Folder where the files will be copied. In most cases you specify this folder using a variable.
我有一个 asp.net web api 项目,其输出需要使用 wix 打包到安装项目中。
我想预编译网站。问题是预编译过程会生成可变文件名(即 *.compiled 文件)。
我也想在 TFS 构建中构建设置。
看来我唯一的选择是在 wix 项目的预构建步骤中生成一个 .wxs 文件。
.wxs 文件源路径使用 $(var._My_Web_Project_.TargetDir)。这似乎被翻译成基于 Sources 的目录。
我已经在使用 paraffin 来做到这一点,并且在使用 visual studio 构建解决方案时它工作得非常好。
通过 TFS 构建构建解决方案时,.compiled 文件被复制到 Binaries 文件夹,而所有其他相关网站文件被复制到基于 Sources 的目录。
构建错误如下:
The system cannot find the file '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 build.
感谢任何帮助。
编辑 2: 使用基于新任务的构建,它按原样工作(无需使用额外的复制文件任务)。
aspnet_compiler 在正确的文件夹中输出 .compiled 文件:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\BuildAgents\vNext\_work\s\Softs\__Solution__\__Web_Project\obj\Release\AspnetCompileMerge\Source -c D:\BuildAgents\vNext\_work\s\Softs\__Solution__\__Web_Project__\obj\Release\AspnetCompileMerge\TempBuildDir
在新的基于任务的构建系统中,使用 Copy Files 任务可以轻松地将文件从源文件夹复制到目标文件夹。
Source Folder: Folder that contains the files you want to copy.
Contents: Specify minimatch pattern filters (one on each line) that you want to apply to the list of files to be copied.
Target Folder: Folder where the files will be copied. In most cases you specify this folder using a variable.