"Add-Migration" terimi tanınmıyor


119

Dün başarıyla çalışan komutu VS2015'te çalıştırmak için bu MSDN Öğreticisini kullanıyorum, PM> Add-Migration MyFirstMigration -context BloggingContextancak bugün buradaki diğer kullanıcılar tarafından da işaret edilen aşağıdaki hatayı veriyor . Migrations klasörünü çözüm gezgininden ve ilgili db'yi de SQL Express 2014 on Win 8.1aynı hatadan sildim . Çalıştırsam bile Add-Migration MyFirstMigrationaynı hatayı alıyorum:

Add-Migration : The term 'Add-Migration' is not recognized as the name of a cmdlet, function, script file, or operable program. 
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Add-Migration MyFirstMigration -context BloggingContext
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Not : 27 Haziran 2016'da yayınlanan ASP.NET Core 1.0 ve VS2015 - Güncelleme 3'ün en son sürümünü kullanıyorum.

GÜNCELLEME

Aşağıdaki komutlar, komut penceresini kullanırken Windows gezginindeki proje dizininde sorunsuz çalışır:

> dotnet ef migrations add MyFirstMigration --context BloggingContext
> dotnet ef database update --context BloggingContext

GÜNCELLEME 2a

Project.json dosyası aşağıdadır:

{
  "userSecretsId": "aspnet-ASPCore_RTM_CodeFirst_test-bef835d9-9831-41a8-bc3a-cd2f1477a880",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Lütfen etiketleri başlığa koymayın
Tseng

lütfen projenizi
yazın.json

@BassamAlugili, isteğiniz üzerine, peoject.json dosyasının ilgili bölümünü eklemek için gönderime bir UPDATE 2 ekledim. Daha fazla bilgiye ihtiyacınız olursa lütfen bildirin
nam

@BriceIam'dan (EF ekibi) bir cevabınız var Sanırım işe yarayacak!
Bassam Alugili

@BassamAlugili project.json dosyasının tüm içeriğini yazımın UPDATE 2 bölümüne ekledim. Lütfen yanıtının altındaki yorumlarıma bakın @bricelam. Ne eksik olabilirim?
nam

Yanıtlar:


236

Çok basit.

Sadece Microsoft.EntityFrameworkCore.Toolsnuget'ten paketi yükleyin :

Yükleme Paketi Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

En son sürümü yüklemek için bu bağlantıyı da kullanabilirsiniz: Nuget paketi bağlantısı

.NET CLI komutu:

dotnet add package Microsoft.EntityFrameworkCore.Tools

Hala Visual Studio 2017 kullandığım için Sürüm
2.2.6'yı yükledim

Çok teşekkürler, bu herkesin yaptığı en yaygın hata
Nitesh Shaw

1
Ayrıca Visual Studio
Liviu Sosu

48

Aşağıdaki adımları deneyin:

1) project.jsonDosyayı açın ve bağımlılıklar ve araçlar bölümlerinden tüm Microsoft.EntityFrameworkCore.Tools referanslarını kaldırın .

2) Paket Yöneticisi Konsolunu ( PMC ) kapatın ve Visual Studio'yu yeniden başlatın

3) ekleyin altında bağımlılıkları bölümünde:

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
 }

4) Araçlar bölümü altına ekle

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

5) Visual Studio 2015'i yeniden başlatın

6) Açık PMC ve tip

Add-Migration $Your_First_Migration_Name$

Bunun nedeni, PMC'nin Visual Studio başlatılırken araçları tanımasıdır.


5
VS2015'te bir saatlik kodlamayı yeniden başlatmaya / yeniden yüklemeye gerek kalmadan zar zor geçirebiliyorum ...
Ryan Murphy

37

Emin olun Microsoft.EntityFrameworkCore.Toolsbaşvuruda bulunulan dependencies, aramalarınızdan bölümünde project.json. NuGet, toolsbölümden Paket Yöneticisi Komutlarını yüklemez . (Bkz. NuGet / Home # 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}

2
Gönderimdeki UPDATE 2'deki project.json dosya içeriğinin tamamını kopyaladım. Microsoft.EntityFrameworkCore.ToolsYanı iç bağımlılıkları bölümdür. Add-MigrationVe Update-Databaseolarak eğitimde talimat komutlar, önceki gece çalıştı. Fakat ertesi sabah modelimde küçük değişiklikler yaptıktan sonra bunları denediğimde ve bu komutları tekrar denediğimde yazımda anlattığım hata mesajını verdiler. Migration klasörünü ve ilgili veritabanını SQL Server'dan bile sildim ancak bu komutları çalıştırdıktan sonra aynı hata mesajını aldım. Ne eksik olabilirim?
nam

Bende de bu belirtiler var. Visual Studio 2015 Güncelleme 3
Kolya_Net

NuGet'te yeniden üretilebilir adımlar ve çok sayıda ortam bilgisi içeren bir hatayı dosyalamayı deneyin . Ekipten önce bu alandaki sorunlardan bahsetmiştim ama onları asla yeniden yorumlayamıyorlar.
bricelam

1
Tuhaf, bu, onu kaldırıp toolssonra yeniden eklersem sorunumu çözüyor . Bunu basitçe taşımak dependenciesaşağıdaki hata mesajına neden olur: 'Microsoft.EntityFrameworkCore.Tools' 'src \ <projeniz> projesinde yüklü olmadığı için bu komut yürütülemiyor. Project.json içindeki 'araçlar' bölümüne 'Microsoft.EntityFrameworkCore.Tools' ekleyin. Daha fazla ayrıntı için go.microsoft.com/fwlink/?LinkId=798221 adresine bakın.
Thorsten Westheider

VS2017 ASP.NET Core kullanıyorum ve aynı sorunu yaşadım. Bu cevap da çözdü!
Westerlund.io

14

aynı sorun ... aşağıdaki dong tarafından çözüldü

1.) pm yöneticisini kapatın 2.) Visual Studio'yu kapatın 3.) Visual Studio'yu açın 4.) pm yöneticisini açın

işin püf noktası VS'yi kapatmadan önce PM Manager'ı kapatmak gibi görünüyor


Evet, PM ve VS'yi yeniden yüklemek bir çözümdür, Daha önce eski bir görsel stüdyosunda oluşturulan projeyi en son görsel stüdyosunda açtığımızda gerçekleşir.Bu kodu açarak, VS birkaç otomatik ayarlamayı dener. ve VS.
Malik Khalil

9

Ben de bu problemi yaşadım. VS2015'i kapatıp açtım ve sorunu "düzelttim" ...


Bu, VS 2019 Topluluk sürümünde gerçekleşmişti.
Gabe

9

Senin Entity-Frameworkversiyonun ne olduğunu bilmelisin . Ayrıca bundan sonra project.jsonşu bölümleri kontrol etmeniz ve kontrol etmeniz gerekir :

In bağımlılıklar

Kontrol:

Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

Bu bölüm:

"version": "1.0.0-preview2-final",

sizin sürümünüzle ilgilidir Entity-Frameworkve bunu bununla değiştirmeniz gerekir.

Ondan sonra ikinci bölüm proj.jsonburada, Sizin Toolsbölümünüzde JSON:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

Ayrıca kodun bu bölümü sizin Entity-Frameworkve Bağımlılıklar bölümündeki kodun son bölümü ile ilgilidir .

Not: Bu sorunları yaptıktan sonra CMDvisual studio'yu kapatıp yeniden başlatmanız gerekir .


6

Yapmam gerekeni ...

1) Araçlar -> Nuget Paket Yöneticisi -> Paket Yöneticisi Ayarları

2) Genel Sekme

3) Tüm NuGet Önbelleğini Temizle

4) Visual Studio'yu yeniden başlatın



5

Microsoft.EntityFrameworkCore.Tools'u başlatmayı deneyin. PM'de yürütmek

C:\Users\<username>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.0.0-preview2-final\tools\init.ps1.

Aynı problemde bana yardımcı oldu. Araçların bir versiyonu farklı olabilir. Projenizde ne kullandığınıza bağlıdır.


1
Benim için göreli bir yol kullanıyorum. \ Packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Bunun nedeni, PM'nin Mevcut Dizininin zaten Çözüm dizini olması, ancak benim için Araçlar paketinin Çözüm. Şahsen, yeniden başlatma, düzenleme, yeniden yükleme olmadığı için bunun en iyi çözüm olduğunu düşünüyorum. Bir an sürer ve işe yarar.
William Lider

4

Ben de aynı sorunla karşılaştım. Projelerimin çoğunda araçlarda aynı şey vardı.

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}

Bu, biri hariç tüm projelerde iyi çalıştı. Araçlardaki girişi şu şekilde değiştirdim

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
}

Ve sonra koştu dotnet restore. Geri yükleme tamamlandıktan sonra Add-Migrationnormal şekilde çalıştı.


2

Aynı sorunu yaşadım ve Çözüm dosyasında bir Visual Studio sürüm belirleme sorunu olduğunu gördüm.

Ben şunu hedefliyordum:

VisualStudioVersion = 14.0.25123.0

Ama hedeflemem gerekiyordu:

VisualStudioVersion = 14.0.25420.1

Bu değişikliği doğrudan Çözüm dosyasına yaptıktan sonra, EF Core cmdlet'leri Paket Yöneticisi Konsolu'nda çalışmaya başladı.


Yardım etmeye çalıştığın için teşekkürler. 14.0.25421.03 Update 3Kullandığınızdan daha yüksek bir sürüm kullanıyorum.
nam

2

Bunlar takip ettiğim adımlar ve sorunu çözdü

1) Power kabuğumu sürüm 2'den 3'e yükselttim

2) PM Konsolunu kapattı

3) Yeniden Başlatılan Visual Studio

4) PM Console dotnet geri yüklemesinde aşağıdaki komutu çalıştırdı

5) Add-Migration InitialMigration

İşe yaradı !!!


1

Bu sorunu yaşadım ve önceki çözümlerin hiçbiri bana yardımcı olmadı. Sorunum aslında Windows 7 makinemdeki eski bir powershell sürümünden kaynaklanıyordu - powershell 5'e güncellediğimde çalışmaya başladı.


1

Paket yöneticisi konsoluna gidin (görsel stüdyoda) ve aşağıdaki komutu çalıştırın

C:\Users\<YOUR_USER>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\<YOUR_INSTALLED_VERSION>\tools\init.ps1


0

MS burada detaylandırılan bazı (önemli) değişiklikler yaptığı için cevabın 2017'de güncellenmesi gerektiğini düşünüyorum.

https://github.com/aspnet/EntityFramework/issues/7053

Özetlemek gerekirse, şimdi aşağıdaki gibi Araçlar Bölümünde EntityFrameWorkCore.Tools.DotNet başvurusuna ihtiyacınız olacak

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"

Ayrıca, bazılarının sorunla karşılaşması durumunda aşağıda çalışan bir project.json dosyası yayınladım.

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Muhtemelen Visual Studio'yu da yeniden başlatmanız gerekecek.
Francis


0

Benim durumumda Nuget aracılığıyla bağımlılık ekledim:

Microsoft.EntityFrameworkCore.Tools

Ve sonra Paket Yöneticisi Konsolu aracılığıyla çalıştırın:

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"

0

Benim için işe yarayan şey buydu: Visual Studio'dan

Araçlar -> NuGet Paket Yöneticisi -> Paket Yöneticisi Konsolu

görüntü açıklamasını buraya girin

Ardından Add-Migration, örneğin koşabilirsiniz :

Add-Migration InitialCreate
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.