Azure DevOps Publish场景下发布错误appsettings.json问题咨询
解决方案
- 方案1:使用命令行参数直接控制发布优先级
你可以在执行dotnet publish命令时添加CopyToPublishDirectoryRespectProjectPriority参数,该参数从.NET Core 3.0版本开始支持,作用是让发布流程按照项目依赖的层级判定同名文件优先级,顶层主项目的文件优先级最高,会自动覆盖下层依赖项目的同名文件,无需额外操作:dotnet publish -c Release /p:CopyToPublishDirectoryRespectProjectPriority=true - 方案2:修改被引用exe项目的文件复制属性
直接在被引用的可执行类库项目中,关闭其appsettings.json的发布复制逻辑,即可避免依赖项目的配置文件被输出到发布目录。在对应项目的.csproj文件中添加如下配置:<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None> <!-- 如果有环境特定配置文件也可以一并配置 --> <None Update="appsettings.*.json"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None> </ItemGroup> - 方案3:在主项目中配置发布规则锁定配置文件优先级
如果你不想修改依赖项目的配置,可以直接在主项目的.csproj文件中添加如下配置,强制发布时优先使用主项目的appsettings.json:
如果使用Visual Studio的可视化发布流程,也可以将上述属性添加到对应的.pubxml发布配置文件中,无需每次执行命令时手动传参。<PropertyGroup> <CopyToPublishDirectoryRespectProjectPriority>true</CopyToPublishDirectoryRespectProjectPriority> </PropertyGroup> <ItemGroup> <Content Update="appsettings.json"> <CopyToPublishDirectory>Always</CopyToPublishDirectory> <TargetPath>appsettings.json</TargetPath> </Content> </ItemGroup>
内容的提问来源于stack exchange,提问作者Will Comeaux
相关产品推荐
相关产品推荐

