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

Jenkins发布Artifact时仅含项目DLL 缺失bin目录其他DLL如何解决

Jenkins 构建.NET Web应用时bin目录依赖DLL未纳入Artifact的配置方案

核心排查&配置步骤

  • 第一步:修正归档路径匹配规则
    绝大多数漏文件的问题都是归档通配符写得太窄导致的。如果是Freestyle类型任务,在「归档成品」配置项的文件匹配栏,不要只配置单文件匹配规则,替换为覆盖全量bin目录资源的通配规则:

    # 匹配所有层级下bin目录内的所有DLL文件
    **/bin/**/*.dll
    # 按需补充其他需要归档的文件
    **/bin/**/*.config
    **/bin/**/*.pdb
    **/web.config
    **/Views/**
    **/wwwroot/**
    

    同时在排除规则栏填入**/obj/**,避免把编译中间目录的无用文件打包进去。
    如果你是用Pipeline脚本写的归档逻辑,不要只写archiveArtifacts 'DemoApplication.dll',改成:

    archiveArtifacts artifacts: '**/bin/**/*.dll,**/web.config,**/Views/**', excludes: '**/obj/**', onlyIfSuccessful: true
    
  • 第二步:修正MSBuild构建参数,确保所有依赖复制到输出目录
    如果工作空间内的bin目录本身就缺依赖DLL,说明构建环节没把依赖复制到位,需要调整MSBuild执行参数,指定统一输出目录、开启构建时部署复制:

    DemoApplication.sln /p:Configuration=Release /p:OutDir=${WORKSPACE}\build_output\ /p:DeployOnBuild=true /p:SkipInvalidConfigurations=true
    

    参数里OutDir指定的是构建产物统一输出路径,所有项目生成的DLL、第三方依赖DLL都会被复制到这个目录下,后续归档直接匹配build_output/**/*即可,不会出现路径层级不对漏抓的问题。
    注意检查参数里不要带/p:PublishSingleFile=true,该配置会把所有依赖合并到入口DLL中,和你本地多DLL输出的行为不一致。

  • 第三步:检查本地私有DLL的复制本地属性
    像ABC.dll、xyz.dll这类非Nuget来源的本地引用DLL,需要确认项目文件(.csproj)中对应引用节点配置了复制到输出目录:

    1. 本地Visual Studio中右键对应DLL引用,确认「复制本地」属性为True
    2. 或者直接打开.csproj文件,找到对应引用节点,确保包含<Private>True</Private>配置,示例:
      <Reference Include="ABC">
        <HintPath>lib\ABC.dll</HintPath>
        <Private>True</Private>
      </Reference>
      <Reference Include="xyz">
        <HintPath>lib\xyz.dll</HintPath>
        <Private>True</Private>
      </Reference>
      
      没有该配置的话MSBuild不会把对应DLL复制到输出bin目录,自然也不会被归档。

验证方式

配置完成后跑一次构建,先进入Jenkins对应任务的Workspace页面,手动检查输出目录下的文件是否完整:如果工作空间里文件齐全但归档产物缺文件,就是归档通配符规则有问题;如果工作空间里本身就缺DLL,回到构建参数、项目引用配置环节排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:51:06