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

MSBuild找不到生成的DLL,如何修改其查找输出程序集的路径?

问题原因

  • .NET SDK 项目默认开启引用程序集生成特性,对应的属性为ProduceReferenceAssembly,默认值为true
  • 该特性开启时,MSBuild 会在编译阶段期望输出两个程序集:主程序集输出到@(IntermediateAssembly),也就是你当前生成的obj\Debug\net5.0\test.dll;精简引用程序集输出到refint目录下的同名文件
  • 你覆写了CoreCompile目标,仅调用自定义IL生成工具输出了主程序集,没有生成引用程序集,因此后续的MSBuild校验步骤会抛出找不到文件的错误

解决方法

有两种可选方案,优先选第一种即可:

方案1:关闭引用程序集生成(最简单)

直接在项目的<PropertyGroup>节点中添加配置,关闭引用程序集生成特性,MSBuild就不会再检查refint目录下的文件:

<ProduceReferenceAssembly>false</ProduceReferenceAssembly>

修改后的完整PropertyGroup示例:

<PropertyGroup>
  <TargetFramework>net5.0</TargetFramework>
  <OutputType>Exe</OutputType>
  <DefaultLanguageSourceExtension>.ao</DefaultLanguageSourceExtension>
  <OutputPath>C:\Users\filip\source\alto\samples\test\obj\Debug\net5.0\</OutputPath>
  <!-- 新增以下配置 -->
  <ProduceReferenceAssembly>false</ProduceReferenceAssembly>
</PropertyGroup>

修改后重新执行dotnet build即可消除报错,你现有的生成逻辑完全不需要改动。

方案2:同步生成引用程序集(仅在你需要用到引用程序集时选择)

如果你的项目需要被其他项目引用,且需要保留引用程序集生成特性,可以修改CoreCompile目标中的执行命令,新增参数让你的IL生成工具同时输出引用程序集到$(TargetRefPath)路径(该变量就是MSBuild预期的refint目录下的程序集路径)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:00