这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。

记一个开发过程中碰到的小问题。

将项目代码复制到另一个目录或另一台电脑时,竟然出现了引用的所有动态库都是感叹号,如下图所示:

连基础的System都是感叹号,用记事本打开项目文件,发现有这段话:

  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.109.2\build\net46\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.109.2\build\net46\System.Data.SQLite.Core.targets'))" />
  </Target>

从没见过这玩意儿,在网上一搜,直接把这段删掉即可解决。

原因是:这个节点有一个属性是 BeforeTargets="PrepareForBuild" 表示它是在build操作之前就执行的,这个时候还没有扫描引用的程序集……

Done

 

posted @ 2025-01-24 10:54  IT王师傅  阅读(818)  评论(0)    收藏  举报