ソリューションからnugetパッケージの復元を削除する


148

'Enable NuGet Package Restore'を使用して、最近のnugetパッケージの復元機能をソリューションに追加しました:http ://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

ただし、ビルドサーバーが破損し、修正する時間がなかったため、削除しました。私の知る限り、そのためのオプションはないので、すべての* .csprojファイルから次の行を手動で削除しました。

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

ここでの問題は、*。csprojファイルがチェックアウトされるか、ソリューションを開くたびに、行が自動的に再度追加され、誤ってチェックインするとビルドが壊れてしまうことです:(

どのように私はそれを永久に削除することができますか?

更新:以下の答えにもかかわらず、ソリューションを開くと、同じ問題を抱えている人はまだ戻ってきますか?


2
ソース管理のチェンジセットをロールバックするだけではいいのではないですか?
Betty

まあ、それはかなり大きな変更セットでしたが、コメントのおかげで私は調べました。ソリューションパスに.nugetフォルダーも追加されているようで、それも削除して問題が解決するかどうかを確認しました
Wiebe Tijsma

ビルドサーバーを修正できましたか?(そして、それはteamcityですか?)、上で引用したインポートプロジェクトラインが、私のteamcityビルドの失敗の原因となっているためです
Baldy

@Baldyいいえ、私たちはTFSビルドを使用しており、私は実際には解決策を探していませんでした。それを削除しただけです(後で
調査する予定です

3
NuGetチームがこの問題を修正するための問題を作成しました。nuget.codeplex.com/workitem/3756で
deadlydog

回答:


214

私はあまりよく見えませんでした、プロジェクトファイルに追加された別のプロパティがあります:

<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>

7
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />.csprojファイルの末尾にも手動で削除する必要があるがあることがわかりました。
TimDog 2012

6
ハ!ゆっくりと後退します :)
TimDog 2012

5
これも私を悩ませています。プロジェクトがさまざまなソリューションに含まれている場合、パッケージの復元機能は問題の山を引き起こします。
ダミアン

7
VS2010がcsproj / msbuildファイルをキャッシュしているように見えるため(特定の変更をピックアップせずに)、「ソリューションを閉じることを確認する」が実際にここで重要です。私はVS2012でこの動作に気づきませんでしたが、VisualStudio内でこれらのファイルを変更するときに私は多くの問題を抱えています。
Xavier Decoster

4
NuGetチームがこの問題を修正するための問題を作成しました。nuget.codeplex.com/workitem/3756で
deadlydog

48

Nugetパッケージの復元を無効にするには:

  1. .nu​​getフォルダーを削除する
  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.codeplex.com/workitem/3756で
deadlydog

1
おかげで、私にとってそれはその選択肢を混乱させるだけでした
Maarten Kieft 14

IFixツールを使用して、多くのプロジェクトでリポジトリをクリーンアップしました。基本的にこれらのステップを自動化します。visualstudiogallery.msdn.microsoft.com/...
angularsen

.nu​​getフォルダは非表示になっているため、プロジェクトだけでなくディレクトリからも削除する必要があります。
Erik Bergstedt 2015年

8

ここでこの設定ではないですか?

オプション...- > Nuget Package Manager- > [uncheck]不足しているパッケージをダウンロードすることをNugetに許可する

ここに画像の説明を入力してください

Visual Studio Professional + Resharper 8.2を使用しています


パッケージフォルダーを削除し、パッケージキャッシュをクリアして問題を修正しました。ありがとう!
Tresto 2015年

1
いいえ、後で.projファイルを更新しません-したがって問題は再発しますが、ここでも実行できます:-)
schmoopy

ビルド中に出力ウィンドウにこれが表示されます。Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'これは、これが進むべき道であることの確認にすぎません。
イスラム教のベンダウ

1
これはNuget Package Restoreとは関係ありません。古いバージョンのVSには、フォルダーを作成してファイルを参照するように変更する「Enable Nuget Package Restore」というタイトルのプロジェクトのコンテキストメニュー項目がありました。あなたはあなたのVCS にコミットすることになっていた(ええ、問題nugetが解決する!)そしてそのような醜さ。最近では、VSの組み込みパッケージが存在し、復元されます。OPは、VSの正しい組み込みパッケージリストアサポートを無効にする方法ではなく、古い悪い方法を削除する方法を求めています。.nuget/.csproj.targetsnuget.exemsbuild /restore
binki 2018

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にもいくつかの情報を投稿しました



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


2

私は2012年を使用して、承認された解決策を利用できませんでした。

  1. VSを完全に閉じる
  2. を更新し<RestorePackages>true</RestorePackages>て行<RestorePackages>false</RestorePackages>を削除し<Import Project="$(SolutionDir)\.nuget\nuget.targets" />ます
  3. また、名前を変更nuget.exeしますnuget.exe.NotExe

2

古いスタイルのNuGetパッケージの復元を使用してプロジェクトをクリーンアップする必要がある場合は、ここで利用可能なIFixツールがプロセスを自動化します。

インストーラー(IFixに追加されますPATH)を実行してから、次のコマンドを実行します。

IFix nugetrestore --fix

最初にそれをチェックモードで実行して、何がクリーンアップされるかを確認できます。

IFix nugetrestore --check

1

同じ問題がありました。私がやったこと:1)ソリューションの各プロジェクトの.csprojファイルに移動し、メモ帳で開き、xmlの一部を削除して保存しました。

2)次に、ソリューション全体のpackage.configファイルをすべて削除しました。

3)次に、.nugetフォルダーとパッケージフォルダーを削除する必要がありました。

この時点で、私は完全にNuGetフリーのソリューションを手に入れました。

4)次に、必要なDLLを手動で参照してコンパイルを実行すると、ソリューションは、NuGetパッケージを必要とせずに大胆に実行されました。


1

その下に[$(SolutionDir)\.nuget\nuget.targets] .nugetフォルダーとnuget.targetsファイルがあるソリューションディレクトリに移動し、フォルダーを削除して、csprojから最後にもう一度行を削除するように変更します。

問題が再びあなたを悩ませることはありません。



0

VS2012 RCでプロジェクトを開くときに誤ってこの「パッケージの復元」オプションを有効にすると、次のようなエラーが発生し始めました。

「エラー1 'C:\ FolderX \ SomeProject.nuget \ nuget.exe'が見つかりません」

エラーを修正するには、上記の手順に従って、各プロジェクトファイルをメモ帳で開き、そのRestorePackage行を削除しました。


0

私はこれらのステップを踏むことによってこの問題を解決することができました:

1)現在チェックアウトされているすべてのファイルの変更のバックアップを取ってください。

2)C:\(TFSにマップされているパス)からソリューションフォルダーを物理的に削除します。

3)TFSから最新のソリューションを入手します。

4)ステップ1で取得したバックアップから変更をコピーします(ある場合)。

それが役に立てば幸い!


-2

まったく同じ問題に遭遇し、プロジェクトファイルからすべての.nugetタグとRestorePackageタグを削除しようとしましたが、.nugetタグとRestorePackagesタグを徹底的に調べても、1つのプロジェクトがリロードされませんでした。どこかに隠された参照があると思います。

最終的には、ファイルをコピーして新しいプロジェクトを作成し、それをソリューションにインポートする方が簡単でした。


-8

ヌゲは吸う。これが問題となっているプロジェクトのルートディレクトリにあるpackages.configから、nugetsを削除し、パッケージ要素を削除またはコメントするだけです。代わりに、いくつかのlibフォルダーへの直接参照を使用してください。

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

他の製品と同じように、使い方がわからず、理解しようとしないと、それは「うんざり」します。
Wiebe Tijsma 2014年

それは目的ですが、私の意見では、微調整してもプロジェクトを十分に制御できません。また、Nuget GUIには、いくつかの深刻なアップグレードが必要です。1.直感的ではない、2。パッケージの管理が難しい3.復元をオフにするのが難しい4.不要なパッケージをダウンロードする5.時々、パッケージを復元できない
Igor N

私はある程度同意しますが、パッケージマネージャーがまったくないことに勝ると思います。彼らはnuget 3.0の深刻なGUIアップグレードに取り組んでいるようです:blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.