Visual Studio 2019中向ASP.NET Core 2.2 WebApp添加现有WebJob项目遇问题
解决ASP.NET Core 2.2 WebApp添加现有WebJob项目的选项问题
我之前也碰到过类似的棘手情况,ASP.NET Core 2.2在WebJobs集成这块确实有不少兼容性小细节需要注意,给你几个经过验证的解决办法:
1. 先确认WebJob项目的兼容性
首先得确保你的WebJob项目符合要求:
- 如果是连续运行的WebJob,推荐使用.NET Framework项目(ASP.NET Core 2.2对Core类型的连续WebJob支持有限);触发式WebJob则可以用Core项目,但要保证WebJobs SDK版本和WebApp的.NET版本匹配(比如WebJobs SDK 3.x对应.NET Core 2.x+)。
- 检查WebJob项目是否正确引用了
Microsoft.Azure.WebJobs和Microsoft.Azure.WebJobs.Extensions包,版本不要太旧。
2. 手动关联WebJob(最可靠的方法)
如果可视化选项找不到或失效,直接修改项目文件来关联是最稳妥的:
步骤1:配置WebApp的.csproj
打开你的ASP.NET Core 2.2 WebApp的.csproj文件,在<Project>节点内添加以下配置(根据你的WebJob类型调整):
<!-- 连续型WebJob --> <ItemGroup> <None Update="App_Data\jobs\continuous\MyWebJob\**"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> <!-- 触发型WebJob --> <ItemGroup> <None Update="App_Data\jobs\triggered\MyWebJob\**"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
把MyWebJob替换成你的WebJob项目名称。
步骤2:配置WebJob的输出路径
打开WebJob项目的.csproj,修改<OutputPath>属性,让它编译到WebApp的对应目录:
<PropertyGroup> <!-- 连续型WebJob的输出路径 --> <OutputPath>..\MyWebApp\App_Data\jobs\continuous\MyWebJob</OutputPath> <!-- 触发型则改成 --> <!-- <OutputPath>..\MyWebApp\App_Data\jobs\triggered\MyWebJob</OutputPath> --> </PropertyGroup>
这里的MyWebApp替换成你的WebApp项目名称。这样每次编译WebJob,文件都会自动同步到WebApp的目录,部署时就能一起上传到Azure。
3. 修复Visual Studio的选项显示问题
有时候VS的缓存或配置异常会导致选项消失,试试这些操作:
- 关闭VS,删除解决方案根目录下的
.vs隐藏文件夹,然后重新打开解决方案。 - 重置VS用户设置:点击
工具 > 导入和导出设置 > 重置所有设置,选择你常用的配置文件重置。 - 检查Azure开发工具:打开Visual Studio Installer,确保“Azure开发”工作负载已安装并更新到最新版本。
4. 关于点击选项报错的说明
你提到点击“添加>现有项目作为Azure WebJobs”报错,大概率是因为你选错了项目!这个选项是要选择WebJob项目,而不是你的ASP.NET Core WebApp项目。错误操作后VS可能缓存了异常状态,导致选项不再显示,按照上面的缓存清理步骤操作后,重新选择正确的WebJob项目就能正常使用了。
内容的提问来源于stack exchange,提问作者C1X
相关产品推荐
相关产品推荐

