这台计算机上缺少此项目引用的 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