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

Github Action+Rsync部署ASP.NET Core 7应用时wwwroot文件未同步

解决ASP.NET Core 7 wwwroot文件未复制到Release目录的问题

你遇到的是ASP.NET Core构建过程中静态文件复制的配置问题,以下两种方案可以解决:

方案1:修改项目文件(.csproj)全局配置

直接在你的ASP.NET Core项目的.csproj文件中添加以下配置,让wwwroot下的所有文件在构建时自动复制到输出目录:

<ItemGroup>
  <!-- 递归包含wwwroot下所有文件,仅复制较新的版本 -->
  <Content Include="wwwroot/**/*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>
  • 如果需要每次构建都强制复制所有文件,把PreserveNewest改成Always即可。
  • 这个配置会覆盖单个文件的属性设置,无需逐个修改文件的“复制到输出目录”属性。

方案2:改用dotnet publish命令(更适合部署场景)

你的GitHub Action目前使用dotnet build,但build命令仅完成编译,不会自动整理部署所需的全部文件(包括静态文件)。改用dotnet publish会生成完整的部署包,自动包含wwwroot文件,修改后的Action步骤如下:

jobs:
  build-and-deploy:
    runs-on: ubuntu-20.04
    steps:
     - uses: actions/checkout@v1
     - name: Setup .NET Core
       uses: actions/setup-dotnet@v1
       with:
        dotnet-version: 7.x
        
     - name: Publish app
       # 发布到指定目录,--output 指定输出路径
       run: dotnet publish --configuration Release --output ./publish
       
     - name: Deploy to server
       id: deploy
       uses: Pendect/action-rsyncer@v1.1.0
       env:
         DEPLOY_KEY: ${{secrets.SSH_PRIVATE_KEY}}
       with:
         flags: '-avzr --delete'
         options: ''
         ssh_options: ''
         src: './publish/'  # 同步publish目录的内容
         dest: '${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/var/www/html'
  • dotnet publish会自动处理静态文件的复制,无需额外配置.csproj,是ASP.NET Core部署的标准做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:15:00