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

迁移新电脑后遇MSB4094错误:多项目无法传入ITaskItem参数

迁移电脑后MSB4094错误的修复方案

问题情况

迁移到新电脑后编译项目,触发MSB4094错误,涉及的任务代码如下:

<Microsoft.SourceLink.GitHub.GetSourceLinkUrl RepositoryUrl="$(PrivateRepositoryUrl)" SourceRoot="@(SourceRoot)" Hosts="@(SourceLinkGitHubHost)" IsSingleProvider="$(SourceLinkHasSingleProvider)">
  <Output TaskParameter="SourceLinkUrl" PropertyName="_SourceLinkUrlToUpdate"/>
</Microsoft.SourceLink.GitHub.GetSourceLinkUrl>

错误详情

严重性 代码 描述 项目 文件 行 抑制状态
错误 MSB4094 "C:\Users\Rob.nuget\packages;C:\Users\rob.nuget\packages" 是 "Microsoft.SourceLink.GitHub.GetSourceLinkUrl" 任务的 "SourceRoot" 参数的无效值。无法将多个项传递给类型为 "Microsoft.Build.Framework.ITaskItem" 的参数。 Appi.Application C:\Program Files\dotnet\sdk\8.0.101\Sdks\Microsoft.SourceLink.GitHub\build\Microsoft.SourceLink.GitHub.targets 36

修复方法

  • 清理重复的NuGet源路径
    打开C:\Users\Rob\AppData\Roaming\NuGet\NuGet.Config,检查packageSources节点,删除重复的、仅大小写不同的C:\Users\Rob\.nuget\packages\和C:\Users\rob\.nuget\packages\,只保留一条记录。

  • 清除编译缓存
    删除项目根目录下的bin和obj文件夹,然后在命令行执行:

    dotnet nuget locals all --clear
    

    完成后重新编译项目。

  • 调整SourceRoot参数传递(备选)
    如果前两步无效,可在项目的.csproj中添加覆盖逻辑,确保SourceRoot只传递单个项:

    <Target Name="FixSourceLinkSourceRoot" BeforeTargets="GetSourceLinkUrl">
      <ItemGroup>
        <SourceRoot Remove="@(SourceRoot)" />
        <SourceRoot Include="@(SourceRoot->First())" />
      </ItemGroup>
    </Target>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:40:24