繁体   English   中英

VSTS构建似乎没有将输出文件发布到正确的目录

[英]VSTS build does not seem to publish output files to proper directory

我正在开发一个ASP.NET核心应用程序。

我将VSTS在线用于源代码控制。 我也有专用的机器来构建应用程序。

为了自动化该过程,我现在尝试从VSTS在线定义一个构建脚本。

默认的VSTS模板定义了许多任务。 我删除了所有我不需要的任务,只剩下三个任务-“使用NuGet”,“ NuGet恢复”和“构建解决方案”。

“构建解决方案”任务的默认msbuild参数为:

/p:DeployOnBuild=true /p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true 
/p:DesktopBuildPackageLocation=
   "$(build.artifactstagingdirectory)\WebApp.zip" 
/p:DeployIisAppPath="Default Web Site"

尽管运行该脚本没有错误,但是我需要对其进行更改,以使输出转到文件夹中且未打包。

这是与我的问题相关的目录结构的一部分:

C:\Dev\RCWebsite\RCWebsite.sln
C:\Dev\RCWebsite\RCWeb\RCWeb.csproj
C:\Dev\RCWebsite\RCWeb\Properties\PublishProfiles\FolderProfile.pubxml

这是发布配置文件的内容:

<PropertyGroup>
  <WebPublishMethod>FileSystem</WebPublishMethod>
  <PublishProvider>FileSystem</PublishProvider>
  <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
  <LastUsedPlatform>Any CPU</LastUsedPlatform>
  <SiteUrlToLaunchAfterPublish />
  <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
  <ExcludeApp_Data>False</ExcludeApp_Data>
  <ProjectGuid>d7d9f3b7-fd0e-49c1-b6d2-3af5dddb6699</ProjectGuid>
  <publishUrl>C:\StagingSites\rcweb</publishUrl>
  <DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>

在控制台窗口中,我可以运行以下命令:

msbuild .\RCWeb\RCWeb.csproj /p:DeployOnBuild=true 
 /p:PublishProfile=RCWeb\Properties\PublishProfiles\FolderProfile.pubxml

这按预期工作。 最终输出在C:\\StagingSites\\rcweb\\目录中生成。

由于此命令有效,我将VSTS“构建解决方案”任务中的msbuild参数替换为:

/p:DeployOnBuild=true 
 /p:PublishProfile=rcWeb\Properties\PublishProfiles\FolderProfile.pubxml

请注意,我没有指定.\\RCWeb\\RCWeb.csproj作为参数。 猜猜构建机制会自动解决这一问题。

当我运行此构建并查看日志文件时,我看到该解决方案构建良好。 但是,它永远不会复制到C:\\StagingSites\\rcweb\\目录。

有人可以告诉我我想念的是什么吗? 在“构建解决方案”任务之后,我是否需要另一个“部署”任务? 问候。

尽管运行该脚本没有错误,但是我需要对其进行更改,以使输出转到文件夹中且未打包。

不,您不需要其他部署任务。 由于不需要使用msbuild打包和部署ASP .NET项目,因此可以摆脱/p:DeployOnBuild=true标记的msbuild。 另外,在查看了您的发布配置文件之后,我意识到您并没有真正将任何信息传递给msbuild(至少不能从msbuild参数传递任何信息),并且由于您不再打算直接从msbuild进行部署,因此保留发布个人资料是一个好主意。

减少参数并添加一些必要的参数后( /T:Package告诉msbuild您想打包二进制文件但不部署它们),这就是msbuild命令的样子:

/p:OutDir=$(Build.BinariesDirectory) /T:Package /p:PackageLocation=$(Build.BinariesDirectory)\WebApp.zip   /p:PackageAsSingleFile=true

假设您希望拥有一个准备好部署的.zip文件作为输出。 如果不是这种情况,而您只需要将二进制文件放在可以直接部署但不能压缩的文件夹中,则可以使用以下命令:

/p:OutDir=$(Build.BinariesDirectory) /T:Package /p:PackageLocation=$(Build.BinariesDirectory)\WebApp.zip  /p:PackageAsSingleFile=true p:_PackageTempDir=$(Build.BinariesDirectory)\MyAspNetWebsite

这将生成zip以及准备部署的Binaries文件夹(不幸的是,您需要zip才能使临时dir标志起作用)

注意:如果计划在Powershell脚本中使用msbuild命令,则需要以其他方式访问VSO变量,例如: 'BUILD_BINARIESDIRECTORY'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM