VS 2017 中没有缓存的 NuGet



>有没有办法告诉Visual Studio解决方案在VS 2017上还原包时不使用NuGet缓存?我知道您可以从命令行将 -NoCache 参数传递给 nuget,但 VS 没有给我设置这些命令行参数的选项。

我尝试将本地缓存清除为项目中的预生成事件,但这发生在 nuget 还原之后,因此我必须重建两次才能使该解决方案正常工作。

我还尝试使用NuGet.Targets返回到nuget包还原的旧方式,但随后我失去了凭据管理器的使用,因此包完全无法加载。

我尝试清除本地缓存作为项目中的预构建事件, 但这发生在 nuget 恢复之后,所以我必须重建 两次使该解决方案起作用。

也许您可以尝试使用"构建后"目标来清理缓存?

我的意思是,在项目从 A 到 G 的情况下,项目 A 使用一个名为 NugetOne 的包。我们生成了项目 A,NugetOne 将添加到缓存中。(C:Usersxxx.nugetpackages)。

现在我们正在项目 B 中工作,它也将使用 NugetOne,我们希望在 VS 中构建项目时在还原之前删除缓存。但根据上面的评论,这种方法失败了。

因此,也许我们可以添加一个在构建后运行的目标来清理缓存。我们可以将目标添加到项目 A 或项目 B 以获得类似的结果:

如果我们把它加到 A:构建 A 成功后,缓存已经被清理干净了,那么在构建 B 的时候,我们就不用担心缓存的影响了。

如果我们将其添加到 B:它的工作方式与您使用的预构建事件类似,必须重建两次才能使其工作。

不确定这是否是您想要的,但如果您想要一个开发环境,在该环境中,开发不会受到其他项目的缓存的影响。您可以考虑使用 Directory.Build.props。

我的Directory.Build.props内容(将其添加到/repos 文件夹,它将影响其下的所有解决方案,将其添加到解决方案,它将影响此解决方案中的所有项目):

<Project>
<Target Name="CleanCache" AfterTargets="build">
<Message Importance="High" Text="Clean the cache..."/>
<xxx //Do your clean cache action here! />
</Target>
</Project>

希望它在某些方面有所帮助。

最新更新