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

Azure CI流水线未将Razor类库静态Web资源放入正确文件夹

解决.NET Core 3.1 Razor类库Azure CI打包静态资源路径错误问题

针对本地打包时静态资源正确放入/staticwebassets/,但Azure CI打包时被放入/content/wwwroot/的问题,可通过以下步骤修复(基于.NET Core 3.1环境,无需升级到.NET 6):

1. 覆盖默认的wwwroot文件打包规则

在csproj中添加规则,阻止SDK默认将wwwroot文件标记为Content并打包到content/wwwroot,同时确保静态资源被嵌入程序集:

<ItemGroup>
    <Content Remove="wwwroot\**\*" />
    <EmbeddedResource Include="wwwroot\**\*" />
</ItemGroup>

2. 完善静态Web资产配置

确认csproj中的关键属性设置,保证静态Web资产的生成和路径映射:

<PropertyGroup>
    <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
    <StaticWebAssetBasePath>_content/$(PackageId)</StaticWebAssetBasePath>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>

3. 对齐Azure CI的.NET SDK版本

本地与CI环境的SDK版本差异可能导致行为不一致,在Azure DevOps流水线中添加任务指定和本地一致的3.1.x版本:

- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '3.1.x'

4. 规范CI打包命令

确保CI使用dotnet pack命令,避免msbuild Pack目标的参数解析问题:

dotnet pack src/Package.Name/Package.Name.csproj -c Release -o $(Build.ArtifactStagingDirectory)

修改后的完整csproj示例

<Project Sdk="Microsoft.NET.Sdk.Razor">

    <PropertyGroup>
        <RootNamespace>Package.Name</RootNamespace>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
        <GenerateMvcApplicationPartsAssemblyAttributes>true</GenerateMvcApplicationPartsAssemblyAttributes>
        <RazorCompileOnBuild>true</RazorCompileOnBuild>
        <IncludeRazorContentInPack>false</IncludeRazorContentInPack>
        <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
        <EnableDefaultRazorGenerateItems>true</EnableDefaultRazorGenerateItems>
        <Version>1.0.0</Version>
        <StaticWebAssetBasePath>_content/$(PackageId)</StaticWebAssetBasePath>
        <EnableDefaultContentItems>false</EnableDefaultContentItems>
    </PropertyGroup>

    <ItemGroup>
        <Content Remove="wwwroot\**\*" />
        <EmbeddedResource Include="wwwroot\**\*" />
    </ItemGroup>

    <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>

    <ItemGroup>
        <Folder Include="Helpers\" />
        <Folder Include="Controllers\" />
        <Folder Include="wwwroot\img\" />
        <Folder Include="wwwroot\lib\js-cookie\" />
    </ItemGroup>

    <ItemGroup>
        <PackageReference Include="IronPdf" Version="2023.1.11416" />
        <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
        <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.8" />
        <PackageReference Include="Microsoft.Identity.Client" Version="4.21.1" />
        <PackageReference Include="Microsoft.PowerBI.Api" Version="3.17.0" />
        <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
        <PackageReference Include="RestSharp" Version="108.0.3" />
        <PackageReference Include="Select2.js" Version="4.0.13" />
        <PackageReference Include="SendGrid" Version="9.21.0" />
        <PackageReference Include="System.Drawing.Common" Version="5.0.3" />
    </ItemGroup>
</Project>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:45:28