更新/恢复NuGet包时出现访问被拒绝错误

12
我创建了一个跨平台的Xamarin Forms项目,但在尝试更新或还原软件包时,出现了以下错误:
"恢复NuGet软件包时发生错误:拒绝访问路径“Xamarin.Forms.Build.Tasks.dll”."
我以管理员身份运行Visual Studio 2017 Community,并且每次在开始更新/还原软件包之前都会清除NuGet缓存。

1
尝试清理 NuGet 缓存。 - EvZ
也许尝试删除所有项目文件夹中的 objbin 文件夹,将解决方案移动到 C 盘根目录(只是为了确保),并以管理员身份运行 VS。如果这样还不行,建议删除所有需要还原 NuGet 的引用,并像全新安装一样再次安装它。 - hvaughan3
我甚至无法访问该文件夹,例如:'C:\Users\Masterbyter\.nuget\packages\xamarin.android.support.animated.vector.drawable\25.4.0.2\lib\MonoAndroid70',通过文件浏览器。现在我正在寻找方法来解决这个问题,因为对于父文件夹,所有帐户都具有完全权限(包括子对象/文件夹/文件),除了特殊权限。我试图将其设置为非“只读”,但是访问也被拒绝了。 - gdfgdfg
2
启动电脑,然后再试一次。 - Sayed Muhammad Idrees
请查看此处 https://dev59.com/jlgQ5IYBdhLWcg3w9Yvk。 - G.Mich
显示剩余4条评论
2个回答

4

我重启后问题得到了解决。


3
重启后错误消失了。 - Khalil Khalaf

0

在这里遇到了同样的问题:“访问路径'....dll'被拒绝。”,这是在TeamCity构建期间进行Nuget还原和依赖项Microsoft.Data.Entity.Build.Tasks.dll上的问题。

花了很长时间做以下事情:

  • 清除整个工作副本,
  • 使用命令行“nuget locals all -clear”清理Nuget缓存,
  • 使用LockHunter等工具手动检查适当文件夹上的锁定文件...

没有任何效果。 直到重新启动,这并不是我最喜欢的解决方案,因为它发生在托管了许多其他东西的服务器上。

但错误在短时间后又出现了(只有一两次构建之后)。我相信TeamCity在其工作副本上放置的只读属性与此有关)。

我找到了我的情况下的真正原因

一些旧的.csproj包含调用nuget以确保其已安装和启用。这已经不再有用,因为nuget已成为本机工具,而且可能会导致错误! 所以在.csproj中删除类似以下行:

      <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
      <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\....props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\.....props'))" />
    <Error Condition="!Exists('..\packages\....targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\....targets'))" />
     </Target>

让NuGet按照它想要的方式完成工作。
这些只是问题行的示例,当然你的可能会有所不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接