是否有一种方法可以告诉Visual Studio解决方案在VS 2017上还原包时不要使用NuGet缓存?我知道您可以从命令行将-NoCache参数传递给nuget,但是VS并没有给我设置这些命令行参数的选项。
我已经尝试在项目中将本地缓存作为预构建事件进行清除,但这是在nuget恢复之后发生的,因此我必须重新构建两次才能使该解决方案正常工作。
我还尝试过使用NuGet.Targets恢复nuget软件包的旧方法,但是后来我失去了使用凭据管理器的功能,因此软件包完全无法加载。
答案 0 :(得分:0)
我尝试将本地缓存作为项目中的预构建事件进行清除, 但是那是在nuget恢复之后发生的,所以我必须重建 两次才能使该解决方案起作用。
也许您可以尝试使用“构建后”目标来清理缓存?
我的意思是,在您有从A到G的项目的情况下,项目A使用了一个名为NugetOne的程序包。我们构建了项目A,并且NugetOne将添加到缓存中。(C:\Users\xxx\.nuget\packages
)。
现在我们正在项目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>
希望它在某些方面有所帮助。