首页 文章

从解决方案中删除nuget包还原

提问于
浏览
146

我使用'Enable NuGet Package Restore'将最近的nuget包恢复功能添加到解决方案中:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

然而,它打破了我的构建服务器,我没有时间来修复它,所以我想删除它 . 据我所知,没有选择,所以我从所有* .csproj文件中手动删除了以下行:

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

现在的问题是,每次我的* .csproj文件签出或打开我的解决方案时,该行会自动添加,如果我不小心检查它,打破我的构建:(

有什么想法我可以永久删除它吗?

更新:尽管下面的答案仍然在打开解决方案时仍然会回来,任何人有同样的问题?

15 回答

  • 3

    我在VS2012 RC中打开我的项目时意外启用了这个“包恢复”选项并开始收到类似的错误:

    “错误1无法找到'C:\ FolderX \ SomeProject.nuget \ nuget.exe'”

    要修复我按照上述说明操作的错误,打开记事本中的每个项目文件并删除该RestorePackage行 .

  • 8

    我能够通过以下步骤解决此问题:

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

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

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

    4)从您在步骤1中执行的备份中复制(如果有)您的更改 .

    希望有所帮助!

  • 5

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

  • 1

    我遇到了完全相同的问题,并试图从项目文件中删除所有.nuget和RestorePackage标签,但一个项目只是不会重新加载无论我为.nuget和RestorePackages标签检查它的彻底 . 我猜这里有一些隐藏的引用 .

    最后,只需复制文件并创建新项目并将其导入解决方案就更容易了 .

  • -2

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

    <RestorePackages>true</RestorePackages>
    

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

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

    UPDATE:

    原来它是手动编辑你的项目文件 make sure to close the solution and delete all the lines from the project at once ,否则它们只是在项目重新加载后再次添加...

    UPDATE2:

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

    UPDATE3:

    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>
    

    Update4

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

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

    要禁用Nuget包还原:

    • 删除.nuget文件夹

    • 从所有.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

  • 48

    这不是这个设置吗?

    Options... - > Nuget Package Manager - > [uncheck] Allow Nuget to download missing packages

    enter image description here

    我正在使用Visual Studio Professional Resharper 8.2

  • 2

    当前使用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发布了一些信息

  • 0

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

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

  • -8

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

    博文中引用了一个 powershell 脚本,它将处理 removing the necessary lines automatically (和递归):https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

    直接提供Disable NuGet Package Restore选项标记为Will not Fix:https://nuget.codeplex.com/workitem/1883

  • 2

    我按照接受的解决方案使用2012无济于事 . 这确实有效,

    • 完全关闭VS.

    • <RestorePackages>true</RestorePackages> 更新为 <RestorePackages>false</RestorePackages> 并删除 <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

    • 还将 nuget.exe 重命名为 nuget.exe.NotExe

  • 1

    对于仍然需要使用旧式NuGet包还原清理项目的任何人,可以使用IFix工具here自动执行该过程 .

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

    IFix nugetrestore --fix
    

    您可以先在检查模式下运行它以查看它将清理的内容:

    IFix nugetrestore --check
    
  • 3

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

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

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

    此时,我有一个完全免费的NuGet解决方案 .

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

  • 0

    转到您的解决方案目录,其中包含 [$(SolutionDir)\.nuget\nuget.targets] .nuget 文件夹和 nuget.targets 文件,删除该文件夹,并最后一次从 csproj 更改删除行 .

    这个问题不会再次出现问题了 .

  • 0

    努奇糟透了 . 只需从有问题的项目的根目录中的packages.config中删除nugets并删除或注释package元素 . 请直接引用某些lib文件夹 .

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

相关问题