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

如何强制Nuget包引用的dll复制到项目输出目录?

方案1:添加无意义代码引用(操作最简单)

在项目任意类(比如Azure Function入口类)中添加一行对System.Memory类型的显式引用,编译器会识别到依赖,自动保留dll复制逻辑:

// 仅声明即可,不需要主动调用
private static readonly Type _forceReference = typeof(System.Span<>);

方案2:修改项目文件强制复制(无需改动业务代码)

右键项目选择「编辑项目文件」,做两处修改:

  1. 调整System.Memory的包引用配置,开启路径属性生成:
<PackageReference Include="System.Memory" Version="你实际使用的包版本">
  <IncludeAssets>all</IncludeAssets>
  <GeneratePathProperty>True</GeneratePathProperty>
</PackageReference>
  1. 在项目文件末尾</Project>标签前添加构建后复制任务,强制将dll拷贝到输出目录:
<Target Name="ForceCopySystemMemoryDll" AfterTargets="Build">
  <!-- 复制到本地构建输出目录 -->
  <Copy SourceFiles="$(PkgSystem_Memory)\lib\net461\System.Memory.dll" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="True" />
  <!-- 发布时同步复制到发布目录,不需要可以删除本行 -->
  <Copy SourceFiles="$(PkgSystem_Memory)\lib\net461\System.Memory.dll" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="True" Condition="Exists('$(PublishDir)')" />
</Target>

注:如果你的System.Memory包版本对应.NET Framework的适配目录不是net461,可以替换为实际存在的目录名

方案3:全局开启所有Nuget包复制本地(适合多依赖缺失场景)

如果项目中不止System.Memory一个包存在引用不复制的问题,可以在项目文件的第一个<PropertyGroup>节点中添加如下配置,强制所有PackageReference引入的dll都复制到输出:

<CopyLocalLockFileAssemblies>True</CopyLocalLockFileAssemblies>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:01