web-dev-qa-db-ja.com

NuGetパッケージと参照を一度だけ修正する

Windows 8.1 Enterprise x64、Visual Studio 2015、MVC 5、EF 6、VS Online、gitを使用

私はVisual Studioを使用して比較的新しい開発者であり(約9か月)、開始して以来、参照とNuGetパッケージで非常に困難な時期を過ごしてきました。週末にコンピューターをシャットダウンした金曜日に、私の参照はすべて正常に機能していました。週末中ずっとコンピューターに触れていませんでしたが、今日は起動して、大量の参照エラーがあります。

list of errors

(合計6,262のエラーがありますが、明らかに全体をスクリーンショットすることはできません。)

私が言ったように、この種の問題は非常に頻繁に発生し、それは非常にイライラします。私が試したこと:

  • エラーをスローするすべての参照が実際に参照されるようにします
  • NuGetでエラーをスローするパッケージをアンインストール/再インストールします
  • packagesフォルダーの内容を完全に削除し、NuGetにそれらを復元させます(すべて再インストールされ、ビューには以前と同じエラーがあります)
  • すべての単一参照が_Copy Local_に設定されていることを確認してください
  • ソリューションを閉じ、すべてのbinおよびobjフォルダーを削除し、コンピューターを再起動して、クリーンアップし、再構築します
  • 必要なすべての参照が関連する_web.config_(Views内またはルート)にあることを確認しました
  • 不足しているパッケージを復元するNuGetオプションを確認します(表示されなかったため、すべてのパッケージはローカルpackagesフォルダーにあります)
  • その他のSOここにリストするのを忘れたと確信していること

私はこれらのパッケージとリファレンスで知恵を絞っています。それは毎回異なる修正であり、今回はそれを理解できません。私が見落としていた明らかな修正を見逃していますか?これが機能しているときに何らかの形でバックアップを取り、問題が発生したときに復元する方法はありますか?現在の問題を支援したり、根本的な問題を修正したりするために、どんなアイデアでも大歓迎です。

追記

問題はビューだけではありません。コントローラーもエラーをスローしています。具体的には:

型または名前空間名「Controller」が見つかりませんでした(usingディレクティブまたはAssembly参照がありませんか?)

(文字通りControllerと表示されますが、プライバシーやその他の理由で変更されたものではありません。)

これらは、必要なすべての名前空間にusingステートメントがあるという事実にもかかわらずスローされます。 usingステートメント自体は適切に機能しますが、コードにエラーがスローされます。推奨される自動修正は、すべてを手動で参照することです。たとえば、var sb = new StringBuilder();は、行をvar sb = new System.Text.StringBuilder();に変更することを望んでいます。その修正をテストしても問題は修正されず、SystemではなくStringBuilderで同じエラーがスローされます。

追加の要求情報

  • VS Team Servicesでgitを使用しています(ただし、パッケージは_.gitignore_では無視されます)。
  • 私と他の1人がこれに取り組んでいますが、他の人は数週間もまったく触れていません(リモートリポジトリからプルすることさえしていません)。
  • _.csproj_ファイル内の参照の形式は_..\..\..\packages\_です(_.csproj_ファイルを基準とした相対位置が正しい)。
  • .NET 4.6をターゲットにします(常に新しいものではありません)
  • すべての参照が解決され、参照リストに感嘆符は表示されません。
21
vaindil

新しいプロジェクト

パッケージがgitで正しく機能するために必要なことは、1つだけです。

リポジトリを作成するときは、必ずVisual Studio開発用に調整された.gitignoreを追加してください。 Googleでそのようなファイルを検索するか、 here から取得できます。

これにより、後で問題を引き起こすようなものをコミットしないようにします。

これにより、パッケージをコードリポジトリにチェックインするときに通常発生する多くの問題を解決できます。パッケージを追加/削除したり、パッケージをアップグレードしたり、リポジトリを新しいマシンに複製したり、パッケージを自動的に復元したりできます。

既存のプロジェクト

これは新しいプロジェクトに適しています。既に大きな混乱のあるプロジェクトがある場合、Visual Studioはパッケージのバージョンを複数の場所(packages.configとapp.config(および必要に応じてweb.config))に保持するため、修正するのは非常に困難です。

オプション1-現在のプロジェクトを修正する

すべてのパッケージを削除できます(すべてのプロジェクトからすべての参照を削除し、パッケージの内容を削除します)。

パッケージがファイル(packages.configまたはapp.configなど)に表示されていないことを確認してください。 .gitignoreを追加してから、パッケージの追加を開始します。

オプション2-新しいプロジェクトを作成する

動作しない場合は、新しいプロジェクトを開始し、.gitignoreを追加し、すべてのコード(コードのみ)を転送して、パッケージをインストールします。

5
daramasala

GitがVSでどのように機能するかについてはあまりよく知りませんが、TFSを使用してソース管理からソリューションのバインドを解除し、すべてのパッケージを修正し、再度バインドする前にクリーニングおよび再構築して、NuGetに関する多くの問題を解決したことを思い出します参照。

GitがVS内で異なる方法で動作する場合、私は謝罪します。

2
Varuuna