繁体   English   中英

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

[英]remove nuget package restore from solution

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

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

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

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

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

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

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

<RestorePackages>true</RestorePackages>

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

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

更新:

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

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.Targets地处.nuget文件夹,里面是被添加到新项目的另一部分...它转换为false。

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

要禁用Nuget Package Restore:

  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

这不是这个设置吗?

选项... - > Nuget包管理器 - > [取消选中]允许Nuget下载丢失的包

在此输入图像描述

我正在使用Visual Studio Professional + Resharper 8.2

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

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

有和没有TFS转换的信息。

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

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

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

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

博客文章中引用了一个powershell脚本,它将自动 (并递归地) 删除必要的行https//github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

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

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

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

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

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

IFix nugetrestore --fix

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

IFix nugetrestore --check

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

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

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

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

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

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

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

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

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

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

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

我通过以下步骤解决了这个问题:

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

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

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

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

希望有所帮助!

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM