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

Visual Studio 2022发布.NET7项目时如何排除CodeCoverage文件夹?

解决.NET 7发布时自动生成CodeCoverage文件夹的问题

问题描述

我拥有一个包含单元测试项目的.NET 7解决方案,使用Visual Studio 2022发布项目时,输出目录中自动生成了不需要的CodeCoverage文件夹。尝试通过移除Content项来排除它,但并未成功。

发布输出:
发布输出中的CodeCoverage文件夹

测试项目结构

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <IsPackable>false</IsPackable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
        <PackageReference Include="Moq" Version="4.18.4" />
        <PackageReference Include="xunit" Version="2.4.2" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>
    </ItemGroup>
</Project>

服务项目结构

<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <startupobject>CService.Program</startupobject>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="AutoMapper" Version="12.0.1" />
        <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
        <PackageReference Include="FluentValidation" Version="11.5.2" />
        <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.8" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.8" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
        <PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="5.3.0" />
        <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="7.0.8" />
        <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
    </ItemGroup>

    <ItemGroup>
        <ProjectReference Include="..\C.Business.csproj" />
        <ProjectReference Include="..\C.Common.csproj" />
        <ProjectReference Include="..\C.Middlewares.csproj" />
        <ProjectReference Include="..\C.Repository.csproj" />
    </ItemGroup>

    <ItemGroup>
        <Content Update="log4netDev.config">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </Content>
        <Content Update="log4netProd.config">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </Content>
    </ItemGroup>

    <ItemGroup>
        <Content Remove="CodeCoverage\**" />
        <Content Remove="CodeCoverage" />
    </ItemGroup>
</Project>

解决步骤

1. 移除服务项目中不必要的测试SDK引用

服务项目无需依赖Microsoft.NET.Test.Sdk包(该包仅用于单元测试项目),直接删除服务项目中对应的PackageReference:

<!-- 从服务项目的ItemGroup中删除此行 -->
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />

这是导致CodeCoverage文件夹随发布输出的核心原因之一。

2. 添加发布排除配置(可选,若移除包后仍有问题)

在服务项目的<PropertyGroup>中添加以下配置,强制排除测试相关目录和资产:

<PropertyGroup>
    <!-- 保留原有配置 -->
    <TargetFramework>net7.0</TargetFramework>
    <startupobject>CService.Program</startupobject>
    
    <!-- 添加以下两行 -->
    <ExcludeTestAssetsFromPublish>true</ExcludeTestAssetsFromPublish>
    <PublishItemsToExclude>$(PublishItemsToExclude);CodeCoverage\**;CodeCoverage</PublishItemsToExclude>
</PropertyGroup>

3. 清理并重新发布

  • 右键解决方案,选择清理解决方案
  • 右键服务项目,选择重新生成
  • 重新执行发布操作,检查输出目录是否已移除CodeCoverage文件夹

额外检查

确保在Visual Studio的发布配置中,未将测试项目的输出包含在发布范围内:

  1. 打开服务项目的发布配置文件(.pubxml)
  2. 确认没有包含测试项目的<ProjectReference>或额外的文件引用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:07:04