C# 在VSTS中为NETCore2 WebJob生成定义

C# 在VSTS中为NETCore2 WebJob生成定义,c#,continuous-integration,.net-core,webjob,C#,Continuous Integration,.net Core,Webjob,我正在Visual Studio Team Services中为一个WebApp设置生成定义,其中包括一些WebJob,所有这些都在.NET Core 2中。 要设置的任务包括: NuGet 4.4.1:NuGet工具安装程序 NuGet恢复 NPM安装 吞咽 生成解决方案(包含.sln中的所有项目,包括 webapp和webjob) Azure应用程序服务部署:(webapp) Azure应用程序服务部署:(webjob) 更新数据库(.dacpac) 休息/清理 问题1:使用.NETCo

我正在Visual Studio Team Services中为一个WebApp设置生成定义,其中包括一些WebJob,所有这些都在.NET Core 2中。 要设置的任务包括:

  • NuGet 4.4.1:NuGet工具安装程序
  • NuGet恢复
  • NPM安装
  • 吞咽
  • 生成解决方案(包含.sln中的所有项目,包括 webapp和webjob)
  • Azure应用程序服务部署:(webapp)
  • Azure应用程序服务部署:(webjob)
  • 更新数据库(.dacpac)
  • 休息/清理
问题1:使用.NETCore 2,我无法将webjob链接到VS2017中的webapp

问题2:我似乎找不到将webjob部署到webapp目标中的子文件夹
/site/wwwroot/app\u data/Jobs/Triggered
。 为此,我尝试在msdeploy上设置参数(如
-dest:
),但也失败了

问题3:市场上似乎没有专门针对这一点的任务

问题4:(不是真正的问题,但还行),我在网上浏览时找不到任何提示

生成任务中的msbuild参数:

/m /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
因此,我有几个压缩的项目,然后我可以使用不同的Azure应用程序服务部署任务分别获取它们。一切都成功运行,但webjob没有发布,因为我似乎无法将其定位到webapp

以下是Azure应用程序服务部署输出:

>     ##[section]Starting: Azure App Service Deploy: ******devapi webjob
> ============================================================================== Task         : Azure App Service Deploy Description  : Update Azure
> App Service using Web Deploy / Kudu REST APIs Version      : 2.1.14
> Author       : Microsoft Corporation Help         : [More
> Information](https://aka.ms/azurermwebdeployreadme)
> ============================================================================== 9eda6c4a-a587-4dda-b343-fecd5027a2f8 exists true Got connection
> details for Azure App Service:'******devapi' [command]"C:\Program
> Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:getParameters
> -source:package='D:\a\1\a\******.Webjob.zip' <output>   <parameters>
>     <parameter name="IIS Web Application Name" value="Default Web Site" tags="IisApp">
>       <parameterEntry kind="ProviderPath" scope="IisApp" match="^D:\\a\\1\\s\\src\\jobs\\******\.Webjob\\obj\\Release\\netcoreapp2\.0\\PubTmp\\Out\\$"
> />
>     </parameter>   </parameters> [command]"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync
> -source:package='D:\a\1\a\******.Webjob.zip' -dest:auto,ComputerName='https://******devapi.scm.azurewebsites.net:443/msdeploy.axd?site=******devapi',UserName='********',Password='********',AuthType='Basic' -setParam:name='IIS Web Application Name',value='******devapi' -enableRule:AppOffline -enableRule:DoNotDeleteRule -userAgent:VSTS_someguid Info: Using ID 'xxx' for connections to the remote server. Total changes: 0 (0 added, 0 deleted, 0 updated, 0
> parameters changed, 0 bytes copied) App Service successfully deployed
> at url http://******devapi.azurewebsites.net Successfully updated
> deployment History at
> https://******devapi.scm.azurewebsites.net/deployments/27891522952986583
> ##[section]Finishing: Azure App Service Deploy: ******devapi webjob
##[部分]开始:Azure应用程序服务部署:******devapi webjob
>==========================================================================================任务:Azure应用程序服务部署说明:更新Azure
>使用Web部署/Kudu REST API的应用程序服务版本:2.1.14
>作者:微软公司帮助:[更多信息]
>[资料](https://aka.ms/azurermwebdeployreadme)
>=====================================================================================9eda6c4a-a587-4dda-b343-fecd5027a2f8存在真正的连接
>Azure应用程序服务的详细信息:'******devapi'[command]“C:\Program
>Files\IIS\Microsoft Web Deploy V3\msdeploy.exe“-动词:getParameters
>-来源:package='D:\a\1\a\*****.Webjob.zip'
>     
>        />
>[命令]“C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe”-动词:同步
>-来源:package='D:\a\1\a\*****.Webjob.zip'-dest:auto,ComputerName='https://******devapi.scm.azurewebsites.net:443/msdeploy.axd?site=*********devapi',UserName='********',Password='********',AuthType='Basic'-setParam:name='IIS Web应用程序名称',value='******devapi'-enableRule:AppOffline-enableRule:DoNotDeleteRule-userAgent:VSTS\u someguid信息:使用ID“xxx”连接到远程服务器。更改总数:0(0已添加、0已删除、0已更新、0
>参数已更改,已复制0个字节)应用程序服务已成功部署
>在url http://******devapi.azurewebsites.net成功更新
>部署历史记录在
>https://*****devapi.scm.azurewebsites.net/deployments/27891522952986583
>##[部分]完成:Azure应用程序服务部署:******devapi webjob
请问,有人知道如何处理WebJobs并在VST中构建定义吗


编辑:我已经将构建和发布分开,以便在成功构建后在发布定义中提取工件。

因此我发现我的答案如下

它所做的是解决我的第一个问题(这也是最有意义的)

问题1:使用.NETCore 2,我无法将webjob链接到 VS2017中的webapp

通过这种方式,webjob与要发布它的应用程序“挂钩”。本指南中的说明注释。在webapp.csproj中,替换/删除
$(ProjectDir)$(PublishDir)
,并根据需要进行设置

<Target Name="PostpublishScript" AfterTargets="Publish">  
    <Exec Command="dotnet publish ..\Azure.WebJob.Continous\ -o $(ProjectDir)$(PublishDir)App_Data\Jobs\Continuous\Azure.WebJob.Continous" />
    <Exec Command="dotnet publish ..\Azure.WebJob.Triggered\ -o $(ProjectDir)$(PublishDir)App_Data\Jobs\Triggered\Azure.WebJob.Triggered" />
</Target>