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

启用Windows长路径后仍报ALINK error 1065错误的问题咨询

问题根因:开启系统长路径支持后仍报AL1065错误的核心原因

Windows系统层面的长路径组策略/注册表配置不是全局生效的万能开关,要让单个程序突破260位MAX_PATH限制,必须同时满足两个条件:一是程序本身通过内嵌应用清单显式声明longPathAware = true属性,二是程序内部的文件操作逻辑没有硬编码260位长度校验、正确调用了支持长路径的Win32 API版本。
你之前猜测相关程序未标记长路径感知的方向是正确的,只是定位错了对应的程序主体。VS2019默认调用的.NET Framework版本程序集链接器al.exe(也就是报错信息里的ALINK组件),属于微软官方工具链的一部分,既没有添加长路径感知的清单标记,内部还硬编码了MAX_PATH路径长度校验逻辑,完全没有适配Windows长路径机制,系统层面的开关对这个程序完全不生效,这就是配置已经落地但构建仍然报错的根本原因。

构建流程中检索到的Alchemy Software相关内容的真实身份

你搜到的Alchemy Software相关说明页面和当前构建流程没有任何关联。Alchemy Software是一家主打软件本地化、多语言翻译工具的厂商,其旗下Alchemy Catalyst产品自带了一个同名的alink.exe工具,同样会抛出AL10xx序列的错误码,因为该页面搜索引擎权重较高,才会在你检索AL1065错误时排在前列。
你当前构建流程中触发报错的ALINK是Visual Studio 2019自带的.NET Framework程序集链接器(Assembly Linker),属于MSBuild原生工具链组件,作用是在构建过程中合并托管模块、嵌入式资源、程序集元数据,最终生成dll/exe主程序集或者多语言卫星附属程序集,只要项目包含嵌入式资源、多模块拆分、本地化资源配置,MSBuild就会自动调用这个组件。你找不到Alchemy相关的dll/exe文件是完全正常的,因为整个构建流程根本没有加载该厂商的任何组件。

让构建工具链适配Windows长路径机制的落地方案

以下方案均从工具链兼容层面解决问题,不需要调整项目路径结构:

  • 替换为已适配长路径的AL工具版本。.NET Core 3.0、.NET 5及以上版本SDK自带的al.exe(即dotnet al工具)已经完成长路径适配,既添加了longPathAware清单标记,也移除了内部硬编码的路径长度校验。你可以在项目根目录的Directory.Build.props文件中添加AlToolPath属性,将AL工具的调用路径指向高版本dotnet SDK目录下的al.exe位置(默认路径为C:\Program Files\dotnet\sdk\<对应SDK版本号>\),替换后即可绕过旧版工具的长度限制。
  • 给旧版Framework版al.exe手动添加长路径兼容标记。如果必须使用VS2019自带的.NET Framework版本al.exe,可以用VS自带的清单工具mt.exe给对应al.exe嵌入兼容配置:
    1. 新建名为al.exe.manifest的清单文件,写入如下配置:
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
        <application xmlns="urn:schemas-microsoft-com:asm.v3">
          <windowsSettings>
            <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
          </windowsSettings>
        </application>
      </assembly>
      
    2. 打开VS开发者命令提示符,定位到al.exe所在目录(VS2019默认路径为C:\Program Files (x86)\Microsoft SDKs\Windows\<对应Windows SDK版本>\bin\<x86/x64架构>\),执行如下命令嵌入清单:
      mt.exe -manifest <你保存的al.exe.manifest文件路径> -outputresource:"al.exe";#1
      
    注意要把所有MSBuild可能调用到的、不同架构不同版本的al.exe副本都完成该修改,修改后可以通过资源管理器查看exe的内嵌清单确认配置生效。
  • 配置MSBuild与Jenkins代理的长路径兼容。给Jenkins构建代理的启动进程(jenkins-agent.exe或对应javaw.exe进程)也添加longPathAware清单标记,避免MSBuild在向AL工具传递路径参数时提前触发长度截断;可以在构建脚本开头执行如下命令,确认长路径注册表配置未被域策略周期性覆盖:
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
    
  • 强制MSBuild传递带扩展前缀的路径。可以在Directory.Build.props中添加配置,强制MSBuild调用AL工具时,所有文件路径都添加\\?\扩展前缀,旧版al.exe即使没有长路径感知标记,只要接收到带该前缀的绝对路径,底层Windows文件API就会自动绕过MAX_PATH限制,不会触发长度校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:39:14