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

跨多项目减少依赖存储重复项及体积的解决方案咨询

解决.NET项目依赖重复存储的方案

核心思路

让解决方案下的所有项目共用同一个依赖存储目录,避免相同DLL被重复拷贝到多个子文件夹,从而缩小Product目录体积。

1. 用全局配置文件统一输出目录

在解决方案根目录新建Directory.Build.props文件(所有子项目会自动读取这个文件的配置),把所有项目的构建输出都指向同一个路径。示例配置:

<Project>
  <PropertyGroup>
    <!-- 统一输出到Product下的共享依赖目录 -->
    <OutputPath>$(SolutionDir)Product\SharedDependencies\$(Configuration)\</OutputPath>
    <!-- 关闭自动追加框架/运行时标识到路径,避免生成多份目录 -->
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
  </PropertyGroup>
</Project>

这样所有项目编译后,输出的DLL都会集中到这个共享目录,相同文件只会保留一份。

2. 优化项目引用的依赖传递

对于项目间的ProjectReference,调整配置避免依赖重复拷贝。在项目的.csproj文件里修改引用节点:

<ProjectReference Include="..\YourOtherProject\YourOtherProject.csproj">
  <PrivateAssets>all</PrivateAssets>
  <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
</ProjectReference>

PrivateAssets="all"会阻止这个引用的依赖被传递到上层项目,避免重复打包相同DLL。

3. 统一NuGet包存储(如果用到NuGet)

如果依赖包含NuGet包,同样在Directory.Build.props里添加配置,让所有项目共用同一个NuGet包目录:

<PropertyGroup>
  <!-- 统一NuGet包的下载和输出路径 -->
  <RestorePackagesPath>$(SolutionDir)Product\SharedDependencies\NuGetPackages</RestorePackagesPath>
</PropertyGroup>

这样所有项目的NuGet包都会下载到这个共享目录,不会在每个项目下重复存储。

4. 清理旧文件并重新构建

删除各个项目下的bin、obj目录,以及Product里原有的重复依赖文件夹,然后重新构建整个解决方案,所有依赖就会统一存储到指定的共享目录中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:24:54