我使用'Enable NuGet Package Restore'将最近的nuget包恢复功能添加到解决方案中: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
然而,它破坏了我的构建服务器,我没有时间来修复它,所以我想删除它。据我所知,没有选择,所以我从所有* .csproj文件中手动删除了以下行:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
现在的问题是,每次我的* .csproj文件被检出或打开我的解决方案时,该行会自动再次添加,如果我不小心检查它就会破坏我的构建:(
有关我如何永久删除它的任何想法?
更新:尽管下面的答案仍然在打开解决方案时仍然会回来,但任何人都有同样的问题?
答案 0 :(得分:212)
我看起来不太好,项目文件中还添加了另一个属性:
<RestorePackages>true</RestorePackages>
只需从所有* .csproj文件中手动删除此以及所有这些行:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<强>更新强>
原来这是一个持久性的小问题,如果你手动编辑项目文件,确保关闭解决方案并立即删除项目中的所有行,否则他们只是项目重新加载后再次添加......
<强> 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>
答案 1 :(得分:48)
禁用Nuget Package Restore:
要移除的行:
<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
答案 2 :(得分:8)
这个设置不是吗?
选项...... - &gt; Nuget Package Manager - &gt; [取消选中]允许Nuget下载丢失的软件包
我正在使用Visual Studio Professional + Resharper 8.2
答案 3 :(得分:5)
目前使用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
发布了一些信息答案 4 :(得分:3)
我们实际上有一篇关于它的博客文章,在帖子的最后,提到了一个PowerShell脚本来帮助迁移。
http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
答案 5 :(得分:3)
NuGet有一篇关于迁移到自动包恢复的博客文章: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
博文中引用了 powershell 脚本,该脚本将负责自动删除必要的行(并递归): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1
直接提供禁用NuGet包还原选项标记为无法修复: https://nuget.codeplex.com/workitem/1883
答案 6 :(得分:2)
我按照接受的解决方案使用2012无济于事。但这确实有效,
<RestorePackages>true</RestorePackages>
更新为<RestorePackages>false</RestorePackages>
并删除<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
行nuget.exe
重命名为nuget.exe.NotExe
答案 7 :(得分:2)
对于仍然需要使用旧式NuGet包还原清理项目的任何人,可用的IFix工具here会自动执行该过程。
只需运行安装程序(var svg = dimple.newSvg("body", 800, 600);
d3.tsv("data.tsv", function (data) {
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 505, 305);
myChart.addTimeAxis("x", "Date", "%m/%d/%Y", "%b-%Y");
myChart.addMeasureAxis("y", "Returns");
myChart.addSeries("Name", dimple.plot.line);
myChart.addLegend(60, 10, 500, 20, "right");
myChart.draw();
});
将添加到IFix
),然后运行以下内容:
PATH
您可以先在检查模式下运行它以查看它将清理的内容:
IFix nugetrestore --fix
答案 8 :(得分:1)
我有同样的问题。我最终做了什么: 1)进入解决方案中的每个项目.csproj文件,在记事本中打开它然后删除部分xml并保存。
2)然后我删除了整个解决方案中的所有package.config文件。
3)然后我不得不删除.nuget和包文件夹。
此时,我有一个完全免费的NuGet解决方案。
4)然后我手动引用任何需要的DLL并点击编译,解决方案像冠军一样运行而不需要NuGet包。
答案 9 :(得分:1)
转到您的解决方案目录,其中包含[$(SolutionDir)\.nuget\nuget.targets]
.nuget
文件夹和nuget.targets
文件,删除该文件夹,
并最后一次更改 csproj 中的删除行。
这个问题不会再次让你感到烦恼。
答案 10 :(得分:1)
删除解决方案中的 packages.config 文件。
答案 11 :(得分:0)
我在VS2012 RC中打开项目时意外启用了这个“包恢复”选项,并开始出现类似错误:
“错误1无法找到'C:\ FolderX \ SomeProject.nuget \ nuget.exe'”
要修复我按照上述说明操作的错误,请打开记事本中的每个项目文件并删除该RestorePackage行。
答案 12 :(得分:0)
我能够通过以下步骤解决此问题:
1)确保备份所有当前签出的文件更改。
2)从C:\(映射到TFS的路径)中物理删除解决方案文件夹。
3)从TFS获取最新解决方案。
4)从您在步骤1中执行的备份中复制(如果有)。
希望有所帮助!答案 13 :(得分:-2)
我遇到了完全相同的问题并尝试从项目文件中删除所有.nuget和RestorePackage标记,但是一个项目不会重新加载,无论我为.nuget和RestorePackages标记检查它有多彻底。我想在某个地方有一些隐藏的引用。
最后,只需复制文件并创建新项目并将其导入解决方案就更容易了。
答案 14 :(得分:-8)
Nuget很糟糕。只需从有问题的项目的根目录中的packages.config中删除nugets并删除或注释package元素。改为使用直接引用到某些lib文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
</packages>