You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dotnet publish发布含Azure资源组项目的解决方案找不到exe如何解决

根因说明

你的判断完全正确,Azure资源组项目属于部署配置类项目,本身仅包含ARM模板、PowerShell脚本等静态文件,没有编译生成的可执行文件,dotnet publish默认会对解决方案下所有可识别项目执行可执行输出校验,因此触发报错。

可用配置方案

方案1:修改项目属性(最常用)

  1. 打开Azure资源组项目的项目文件(通常后缀为.azproj或.msbuildproj),在首个<PropertyGroup>节点下添加2行配置:
<!-- 禁止dotnet publish对该项目执行可执行文件校验 -->
<IsPublishable>false</IsPublishable>
<!-- 项目内静态文件自动复制到项目自身输出目录 -->
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  1. 打开Web API项目的项目文件,添加配置将资源组项目的静态文件同步到API发布目录:
<ItemGroup>
  <!-- 把路径替换为你实际的Azure资源组项目相对路径,下面示例假设两个项目在同级目录,资源组项目名为MyAzureRG -->
  <Content Include="..\MyAzureRG\**\*.json;..\MyAzureRG\**\*.ps1" 
           CopyToPublishDirectory="PreserveNewest"
           Link="AzureDeploymentFiles\%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>

配置中Link属性的AzureDeploymentFiles是发布后静态文件在API输出目录中的子文件夹名,可根据需求自定义。

方案2:发布时指定仅发布Web API项目

不需要修改项目配置,执行publish命令时直接指定目标为Web API项目,跳过资源组项目即可:

dotnet publish 你的Web API项目路径/项目名.csproj -c Release -o 输出目录路径

如果需要同步资源组文件,还是需要添加方案1中Web API项目的Content节点配置。

方案3:解决方案级全局配置

如果需要经常执行解决方案级别的dotnet publish 解决方案名.sln命令,可以在解决方案根目录新建Directory.Build.props文件,全局过滤资源组项目的publish校验:

<Project>
  <PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.azproj'">
    <IsPublishable>false</IsPublishable>
  </PropertyGroup>
</Project>

该配置会自动对所有后缀为.azproj的资源组项目生效,无需单独修改每个资源组项目文件。

内容的提问来源于stack exchange,提问作者Esteban Cervantes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:15:02