从解决方案中删除 Nuget 软件包恢复

我在一个使用“ Enable NuGet Package Restore”的解决方案中添加了最近的 NuGet 包恢复功能: Http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

但是它破坏了我的构建服务器,我没有时间来修复它,所以我想删除它。据我所知,没有这样的选择,所以我从我的 * 中手动删除了以下代码行。Csproj 文件:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

现在的问题是,每次我的 * 。Csproj 文件被签出或打开我的解决方案,这行是自动添加再次,打破我的构建,如果我不小心签入: (

有什么办法可以永久移除吗?

更新: 尽管下面的答案在打开解决方案时仍然不断返回,有人有同样的问题吗?

66353 次浏览

我看起来不太好,有另一个属性添加到项目文件:

<RestorePackages>true</RestorePackages>

只需要从所有 * . csproj 文件中手动删除这些代码以及所有这些代码行:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

更新:

原来这是一个持久的小错误,如果你手动编辑你的项目文件,确保立即关闭解决方案并删除项目中的所有行,否则他们只是再次添加一次项目重新加载..。

更新2:

也从解决方案根目录中删除.nuget 文件夹

更新3:

新版本的 NuGet 增加了另一个你需要删除的部分:

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

更新4

在位于 .nuget文件夹中的 NuGet.Targets中,有另一个部分被添加到新项目中... ... 将其切换为 false。

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>

当我在 VS2012 RC 中打开我的项目时,我不小心启用了这个“包恢复”选项,并且开始得到类似下面这样的错误:

”错误1无法定位‘ C: FolderX Some Project.nuget nuget.exe’”

为了修复这个错误,我按照上面的说明,在记事本中打开每个项目文件并删除 RestorePackage 行。

我遇到了完全相同的问题,并试图删除所有。来自项目文件的 nuget 和 RestorePackage 标签,但是无论我如何彻底地检查它,有一个项目都不会重新加载。Nuget 和 RestorePackages 标记。我猜这里面肯定隐藏着什么。

最后,只需复制文件并创建一个新项目并将其导入到解决方案中即可。

禁用 Nuget 软件包还原:

  1. 删除.nuget 文件夹
  2. 删除所有.csproj 文件中的特定行

要删除的行:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

注意: 在重新加载解决方案之前,请确保一次性完成所有更改,否则它将重新添加这些更改。

这是基于以下条款: Http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

此外,您可能需要再次检查该选项是否已禁用: Http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

我能够通过采取以下步骤来解决这个问题:

1)确保备份所有当前签出文件的更改。

2)从 C: (映射到 TFS 的路径)中物理删除解决方案文件夹。

3)从 TFS 获取最新的解决方案。

4)从步骤1中的备份中复制(如果有的话)您的更改。

希望能帮上忙!

我也有同样的问题,我最后做了什么: 1)进入每个项目。在解决方案中打开 csproj 文件,在记事本中打开它,然后删除 xml 的部分并保存。

2)然后我删除了整个解决方案中的所有 package.config 文件。

3)然后我不得不删除.nuget 和包文件夹。

在这一点上,我有一个完全的 NuGet 免费解决方案。

4)然后我手动引用任何需要的 DLL,点击编译,解决方案像冠军一样运行,而不需要 NuGet 包。

我在2012年使用了这个被接受的解决方案,但是没有用,

  1. 完全关闭 VS
  2. <RestorePackages>true</RestorePackages>更新为 <RestorePackages>false</RestorePackages>并删除 <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
  3. 也将 nuget.exe重命名为 nuget.exe.NotExe

当前使用 MSBuild 集成包还原的解决方案可以迁移到自动包还原。据我所知,这应该可以帮助那些遇到 CI 构建问题的人。(如果我说错了,请纠正我)。

请参阅 nuget 网站上的文档: 迁移 MSBuild-集成解决方案以使用 http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore上的自动包恢复

这里有一些信息,可以在有或没有 TFS 的情况下进行转换。

David Ebbo 也在 http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html上发布了一些信息

转到解决方案目录,其中有 < code > [ $(SolutionDir) . nuget nuget.target ] . nuget 文件夹和它下面的 nuget.targets文件删除文件夹, 最后一次改变从你的 Csproj删除行。

这个问题不会再来烦你了。

不就是这里吗?

选项... -> Nuget 包装经理-> < strong > [ uncheck ]允许 Nuget 下载丢失的软件包

enter image description here

我使用的是 Visual Studio Professional + Resharper 8.2

我们实际上有一篇关于它的博客文章,在文章的最后提到了一个 Powershell 脚本来帮助迁移。

Http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

NuGet 有一篇关于迁移到自动包恢复的博文: Http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

在博客文章中引用了一个 强力弹脚本,它将负责 自动删除必要的线路(并递归地) : Https://github.com/owen2/automaticpackagerestoremigrationscript/blob/master/migratetoautomaticpackagerestore.ps1

直接提供禁用 NuGet 软件包恢复选项被标记为不会修复: Https://nuget.codeplex.com/workitem/1883

难吃死了。只需从项目根目录的 packages.config 中删除 nugets 并删除或注释包元素,这是一个问题。而是直接引用某些 lib 文件夹。

<?xml version="1.0" encoding="utf-8"?>
<packages>
<!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
</packages>

对于仍然需要使用旧式 NuGet 包恢复清理项目的任何人,可用的 IFix 工具 给你将自动完成这一过程。

只需运行安装程序(IFix将被添加到 PATH) ,然后运行以下命令:

IFix nugetrestore --fix

您可以先在检查模式下运行它,看看它会清除哪些内容:

IFix nugetrestore --check

删除解决方案中的 Packages.config文件。