最近Visual Studio 2012にアップグレードしましたRTM MSDNからの究極です。EFCode First Migrationsを使用してアプリにデータベースを構築しています。最近、新しいエンティティを追加し、移行の足場を組んでいますそれのための。
これを行うには、VSで[パッケージ管理コンソール]ウィンドウを開き、add-migration "some name here"
と入力する必要があります。これは、データベースが最後に更新されてからのデータベースへの変更を足場します。
この問題はVS 2012 RCでは発生しませんでした
私が直面している問題は、私のソリューションにいくつかのプロジェクトがあるにもかかわらず、パッケージマネージャーコンソールの[既定のプロジェクト]ドロップダウンが表示されないことです。上記のコマンドを入力しただけで使用されるデフォルトのプロジェクトは間違ったプロジェクトです(私の移行は別のプロジェクトにあります)。これを行うと、次のエラーが発生します。
アセンブリ 'ProjectA'に移行構成タイプが見つかりませんでした。 (Visual Studioでは、パッケージマネージャーコンソールからEnable-Migrationsコマンドを使用して、移行構成を追加できます)。
正しいプロジェクト(ProjectB)をスタートアッププロジェクトとして設定しようとしましたが、このエラーが発生するだけです。
アセンブリ 'ProjectA'を読み込めませんでした。 (Visual Studio内でCode First Migrationsを使用している場合、これは、ソリューションのstartUpプロジェクトが移行を含むプロジェクトを参照していない場合に発生する可能性があります。ソリューションのstartUpプロジェクトを変更するか、-StartUpProjectNameパラメーターを使用できます。)
追加するプロジェクトの移行を手動で指定したり、[既定のプロジェクト]ドロップダウンを強制的に入力したりするにはどうすればよいですか?
次を使用してプロジェクトを手動で指定することができました。
add-migration "Locations" -StartupProjectName "ProjectA" -ProjectName "ProjectB"
このコマンドのドキュメントはまばらなので、これが私が想定していることです。
-StartupProjectName
は、データベース構成が格納されているプロジェクト(私の場合はMVC4プロジェクト)を指定します-ProjectName
は、マイグレーションを足場とするプロジェクトを指定します。この質問のテストのために、アプリでProjectB
をスタートアッププロジェクトとして設定しましたが、VSでスタートアッププロジェクトとして正しいプロジェクトが設定されている場合は、-StartupProjectName
を省略できると思います。
VS 2015では、IDEを再起動したところ、ドロップダウンが再び表示されました。
IDEを閉じて再度開くと役立つ場合があります。それは私のVS2015で機能しました
ソリューションを閉じて、再度開きます。クローズIDE時間がかかることがあります。これはVS 2017で機能します
最初にNuGetパッケージを復元する必要がありました。その後、それは示した。
Visual Studio 2013でも同様の問題がありました。[ソリューション]-> [プロパティ]-> [スタートアッププロジェクト]を右クリックして、[単一のスタートアッププロジェクト]が選択されていることを確認します。以前、Azureワーカーロールテスト用に複数のプロジェクトを選択していました。
既存のVSの後、パッケージマネージャーは問題なく動作しました。