作者:匿名
发布:3天前

1 问题

项目发布后总会有很多无用的文件夹,比如以语言名命名的几十个文件夹,如zh_CN,zh_TW,

有很多无用的库,比如Microsoft.CodeAnalysis.dll,Microsoft.VisualStudio.Web.CodeGeneration

手工删除很麻烦。

处理后以下文件都不见了,发布的项目文件数量大幅减少:

以下文件都清理掉了 以下文件夹清理掉了
Humanizer.dll en-US
Microsoft.AspNetCore.Components.QuickGrid.dll en-AU
Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter.dll nl-BE
Microsoft.AspNetCore.Razor.Language.dll en-CA
Microsoft.Build.dll zh-HK
Microsoft.Build.Framework.dll zh-SG
Microsoft.CodeAnalysis.AnalyzerUtilities.dll zh
Microsoft.CodeAnalysis.CSharp.dll zh-CN
Microsoft.CodeAnalysis.CSharp.Features.dll zh-TW
Microsoft.CodeAnalysis.CSharp.Workspaces.dll en-BZ
Microsoft.CodeAnalysis.dll en-029
Microsoft.CodeAnalysis.Elfie.dll en-IE
Microsoft.CodeAnalysis.Features.dll en-JM
Microsoft.CodeAnalysis.Razor.dll en-NZ
Microsoft.CodeAnalysis.Scripting.dll en-ZA
Microsoft.CodeAnalysis.Workspaces.dll en-TT
Microsoft.Data.SqlClient.dll en-GB
Microsoft.Data.SqlClient.SNI.dll fr-BE
Microsoft.DiaSymReader.dll fr-CA
Microsoft.DotNet.Scaffolding.Shared.dll fr-LU
Microsoft.EntityFrameworkCore.Abstractions.dll fr-CH
Microsoft.EntityFrameworkCore.dll de-AT
Microsoft.EntityFrameworkCore.Relational.dll de-LI
Microsoft.EntityFrameworkCore.SqlServer.dll de-LU
Microsoft.Extensions.DependencyModel.dll de-CH
Microsoft.Identity.Client.dll it-CH
Microsoft.Identity.Client.Extensions.Msal.dll no
Microsoft.IdentityModel.Abstractions.dll nb-NO
Microsoft.IdentityModel.JsonWebTokens.dll nn-NO
Microsoft.IdentityModel.Logging.dll pt-BR
Microsoft.IdentityModel.Protocols.dll es-AR
Microsoft.IdentityModel.Protocols.OpenIdConnect.dll es-BO
Microsoft.IdentityModel.Tokens.dll es-CL
Microsoft.IO.RecyclableMemoryStream.dll es-CO
Microsoft.NET.StringTools.dll es-CR
Microsoft.SqlServer.Server.dll es-DO
Microsoft.VisualStudio.Web.CodeGeneration.Core.dll es-EC
Microsoft.VisualStudio.Web.CodeGeneration.dll es-SV
Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll es-GT
Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll es-HN
Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll es-MX
Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll es-ES
Mono.TextTemplating.dll es-NI
NuGet.Common.dll es-PA
NuGet.Configuration.dll es-PY
NuGet.DependencyResolver.Core.dll es-PE
NuGet.Frameworks.dll es-PR
NuGet.LibraryModel.dll es-UY
NuGet.Packaging.dll es-VE
NuGet.ProjectModel.dll sv-FI
NuGet.Protocol.dll  
NuGet.Versioning.dll  
System.ClientModel.dll  
System.CodeDom.dll  
System.Composition.AttributedModel.dll  
System.Composition.Convention.dll  
System.Composition.Hosting.dll  
System.Composition.Runtime.dll  
System.Composition.TypedParts.dll  
System.Configuration.ConfigurationManager.dll  
System.DirectoryServices.AccountManagement.dll  
System.DirectoryServices.dll  
System.DirectoryServices.Protocols.dll  
System.IdentityModel.Tokens.Jwt.dll  
System.Memory.Data.dll  
System.Reflection.MetadataLoadContext.dll  
System.Runtime.Caching.dll  
System.Security.Cryptography.ProtectedData.dll  

2. 解决办法

进入下图位置,将无用的库都删掉。

屏幕截图 2025-06-09 180333.png

或者打开MyWebApp.csproj,直接改这个文件也可以。

3. 我的库的清理情况,

3.1 我的 .csproj 文件的清理项目

目标是减少发布时包含的无用库,仅保留 Razor Pages 项目常用及你可能实际用到的依赖。

分析思路如下:

1.    Razor Pages 项目 通常不需要 Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter(Blazor 相关)。

2.    Microsoft.VisualStudio.Web.CodeGeneration.Design、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools 只用于开发/设计期,发布时可通过 <PrivateAssets>all</PrivateAssets> 隐藏,或直接移除(如不再 Scaffold)。

3.    Microsoft.EntityFrameworkCore.Abstractions、Microsoft.EntityFrameworkCore.Analyzers,Microsoft.EntityFrameworkCore.Relational 通常会被主包引用,可考虑移除。

4.    仅保留你实际代码中用到的第三方库(如 NLog、NPOI、SkiaSharp、Newtonsoft.Json、System.DirectoryServices 等),未用到的建议移除。

5.    其它库如 System.Security.Cryptography.Pkcs,如无证书/加密需求可移除。

3.2 推荐精简后的 .csproj 文件如下:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <AssemblyVersion>1.2.1.0</AssemblyVersion>
    <FileVersion>1.2.1.0</FileVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="CZGL.SystemInfo" Version="2.2.0" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="5.3.15" />
    <PackageReference Include="NPOI" Version="2.7.2" />
    <PackageReference Include="SkiaSharp" Version="3.116.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="System.DirectoryServices" Version="9.0.0" />
    <!-- 如确实需要证书/加密功能再保留 -->
    <!-- <PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.0" /> -->
  </ItemGroup>
  <ItemGroup>
    <None Update="arial.ttf">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="CloudFlare_Origin_Certificate.pfx">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>


3.3 具体变更说明

•    移除了 Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter(Blazor 相关)。

•    移除了开发/设计期依赖(Microsoft.VisualStudio.Web.CodeGeneration.Design、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.Abstractions、Microsoft.EntityFrameworkCore.Analyzers)。

•    保留了常用的日志、Excel、图形、EF Core、Json、AD 相关库。

•    System.Security.Cryptography.Pkcs 如无证书/加密需求建议移除。

Tags: Dotnet   依赖库   VS2022  
2天前
24
1
0