Thuật ngữ "Add-Migration" không được công nhận


116

Tôi đang sử dụng Hướng dẫn MSDN này để chạy trong VS2015 lệnh PM> Add-Migration MyFirstMigration -context BloggingContextđã chạy thành công ngày hôm qua nhưng hôm nay nó đưa ra lỗi sau đây cũng được chỉ ra bởi những người dùng khác ở đây . Tôi thậm chí đã xóa thư mục Migrations khỏi trình khám phá giải pháp và db tương ứng khỏi SQL Express 2014 on Win 8.1nhưng cùng một lỗi. Ngay cả khi tôi chạy Add-Migration MyFirstMigrationtôi vẫn gặp lỗi tương tự:

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

Lưu ý : Tôi đang sử dụng phiên bản mới nhất của ASP.NET Core 1.0 và VS2015 - Bản cập nhật 3 được phát hành vào ngày 27 tháng 6 năm 2016.

CẬP NHẬT

Các lệnh sau hoạt động tốt từ thư mục dự án trong windows explorer khi sử dụng cửa sổ lệnh:

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

CẬP NHẬT 2a

Sau đây là tệp project.json:

{
  "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%" ]
  }
}

Vui lòng không nhét thẻ vào tiêu đề
Tseng

viết được hài lòng project.json của bạn Tôi muốn nhìn thấy các gói của bạn
Bassam Alugili

@BassamAlugili theo yêu cầu của bạn, tôi đã thêm CẬP NHẬT 2 trong bài đăng của mình để thêm phần có liên quan của tệp peoject.json. Vui lòng cho tôi biết nếu bạn cần thêm thông tin
nam

Bạn đã nhận được câu trả lời từ @briceIam (nhóm EF) Tôi nghĩ nó sẽ hoạt động!
Bassam Alugili

@BassamAlugili Tôi đã thêm toàn bộ nội dung của tệp project.json trong phần CẬP NHẬT 2 của bài đăng của mình. Vui lòng xem ý kiến ​​của tôi dưới phản hồi từ @bricelam. Những gì tôi có thể bị thiếu?
nam

Câu trả lời:


233

Nó rất đơn giản.

Chỉ cần cài đặt Microsoft.EntityFrameworkCore.Toolsgói từ nuget:

Gói cài đặt Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

Bạn cũng có thể sử dụng liên kết này để cài đặt phiên bản mới nhất: Liên kết gói Nuget

Lệnh .NET CLI:

dotnet add package Microsoft.EntityFrameworkCore.Tools

Tôi đã cài đặt Phiên bản 2.2.6 vì tôi vẫn đang sử dụng Visual Studio 2017.
BluE

Cảm ơn rất nhiều, đây là lỗi phổ biến mà mọi người đều mắc phải
Nitesh Shaw

1
Tôi cũng cần khởi động lại Visual Studio
Liviu Sosu

48

Hãy thử các bước sau:

1) Mở project.jsontệp và loại bỏ tất cả các tham chiếu Microsoft.EntityFrameworkCore.Tools khỏi các phần phụ thuộccông cụ .

2) Đóng Bảng điều khiển Trình quản lý Gói ( PMC ) và khởi động lại Visual Studio

3) Thêm dưới phụ thuộc phần:

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

4) Thêm trong phần công cụ

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

5) Khởi động lại Visual Studio 2015

6) mở các PMC và loại

Add-Migration $Your_First_Migration_Name$

Điều này xảy ra vì PMC nhận ra các công cụ khi Visual Studio đang khởi động.


5
Tôi chỉ có thể vượt qua một giờ mã hóa trên VS2015 mà không cần một cái gì đó cần phải được khởi động lại / cài đặt lại ...
Ryan Murphy

37

Đảm bảo Microsoft.EntityFrameworkCore.Toolsđược tham chiếu trong dependenciesphần của bạn project.json. NuGet sẽ không tải các Lệnh của Trình quản lý Gói từ toolsphần này. (Xem NuGet / Home # 3023 )

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

2
Tôi đã sao chép toàn bộ nội dung tệp project.json trong CẬP NHẬT 2 của bài đăng của mình. Phần Microsoft.EntityFrameworkCore.Toolsphụ thuộc bên trong cũng vậy. Các lệnh Add-MigrationUpdate-Database, như đã hướng dẫn trong hướng dẫn đã hoạt động vào đêm hôm trước. Nhưng khi tôi thử chúng vào sáng hôm sau sau khi thực hiện các thay đổi nhỏ đối với mô hình của mình và thử lại các lệnh này, họ đã đưa ra thông báo lỗi được mô tả trong bài đăng của tôi. Tôi thậm chí đã xóa thư mục Di chuyển và cơ sở dữ liệu tương ứng khỏi SQL Server nhưng tôi nhận được thông báo lỗi tương tự sau khi chạy các lệnh này. Những gì tôi có thể bị thiếu?
nam

Tôi cũng có những triệu chứng này. Tôi đang sử dụng Visual Studio 2015 Update 3
Kolya_Net

Hãy thử sửa lỗi trên NuGet bằng các bước có thể tái tạo và nhiều thông tin về môi trường. Tôi đã đề cập đến các vấn đề trong lĩnh vực này trước nhóm, nhưng họ không bao giờ có thể thay đổi chúng.
bricelam

1
Kỳ lạ, điều này giải quyết được vấn đề của tôi nếu tôi xóa nó khỏi toolsvà thêm lại sau đó. Chỉ cần di chuyển nó đến dependenciessẽ dẫn đến thông báo lỗi sau: Không thể thực thi lệnh này vì 'Microsoft.EntityFrameworkCore.Tools' không được cài đặt trong dự án 'src \ <dự án của bạn>. Thêm 'Microsoft.EntityFrameworkCore.Tools' vào phần 'công cụ' trong project.json. Xem go.microsoft.com/fwlink/?LinkId=798221 để biết thêm chi tiết.
Thorsten Westheider,

Tôi đang sử dụng VS2017 ASP.NET Core và gặp sự cố tương tự. Câu trả lời này cũng giải quyết nó!
Westerlund.io

14

cùng một vấn đề ... được giải quyết bằng dong như sau

1.) đóng trình quản lý chiều 2.) đóng Visual Studio 3.) Mở Visual Studio 4.) Mở trình quản lý chiều

Có vẻ như mẹo là đóng PM Manager trước khi đóng VS


Có tải lại PM và VS là một giải pháp, Điều này xảy ra khi chúng tôi mở dự án trong studio trực quan mới nhất đã được tạo trước đó ở phiên bản cũ hơn. Bằng cách mở mã như vậy, VS sẽ thử một vài chỉnh sửa tự động. và VS.
Malik Khalil

9

Tôi cũng vừa gặp vấn đề này. Tôi đã đóng và mở VS2015 và nó đã "khắc phục" sự cố ...


Điều này vừa xảy ra trong phiên bản Cộng đồng VS 2019.
Gabe

9

Bạn phải biết Entity-Frameworkphiên bản của bạn là gì . Ngoài ra, sau đó bạn phải kiểm tra project.jsonvà kiểm soát các phần này:

Trong phụ thuộc

kiểm tra:

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

Phần này:

"phiên bản": "1.0.0-preview2-final",

liên quan đến phiên bản của bạn Entity-Frameworkvà bạn phải thay đổi điều này với điều đó.

Sau đó, phần thứ hai của proj.jsonlà ở đây, Trong Toolsphần của JSONbạn có:

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

Ngoài ra, phần mã này có liên quan đến phần mã của bạn Entity-Frameworkvà phần cuối cùng của mã trong phần Phụ thuộc .

Lưu ý: Sau khi thực hiện vấn đề này, bạn nên đóng CMDvà khởi động lại visual studio.


6

Tôi phải làm gì ...

1) Công cụ -> Trình quản lý gói Nuget -> Cài đặt Trình quản lý gói

2) Tab Chung

3) Xóa tất cả (các) NuGet Cache

4) Khởi động lại Visual Studio



5

Chỉ cần thử init Microsoft.EntityFrameworkCore.Tools. Trong PM thực thi

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

Nó đã giúp tôi với cùng một vấn đề. Một phiên bản của các công cụ có thể khác. Nó phụ thuộc vào những gì bạn sử dụng trong dự án của mình.


1
Đối với tôi, tôi sử dụng một đường dẫn tương đối. \ Package \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Điều này là do Thư mục Hiện tại của PM đã là thư mục Giải pháp, nhưng đối với tôi, gói Công cụ là một phần của Giải pháp. Cá nhân tôi nghĩ đây là giải pháp tốt nhất vì không phải khởi động lại, chỉnh sửa, cài đặt lại. Nó diễn ra ngay lập tức, và nó hoạt động.
William Leader

4

Tôi gặp phải vấn đề tương tự. Hầu hết các dự án của tôi đều có cùng một thứ trong các công cụ.

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

Điều này hoạt động tốt trên tất cả trừ một dự án. Tôi đã thay đổi mục nhập trong các công cụ thành

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

Và sau đó chạy dotnet restore. Sau khi khôi phục hoàn tất, Add-Migrationhoạt động bình thường.


2

Tôi gặp sự cố tương tự và nhận thấy rằng đó là sự cố lập phiên bản Visual Studio trong tệp Giải pháp.

Tôi đã nhắm mục tiêu:

VisualStudioVersion = 14.0.25123.0

Nhưng tôi cần nhắm mục tiêu:

VisualStudioVersion = 14.0.25420.1

Sau khi thực hiện thay đổi đó trực tiếp đối với tệp Giải pháp, lệnh ghép ngắn EF Core bắt đầu hoạt động trong Bảng điều khiển trình quản lý gói.


Cảm ơn bạn vi đa cô găng giup. Tôi đang sử dụng phiên bản 14.0.25421.03 Update 3thậm chí còn cao hơn những gì bạn đang sử dụng.
nam

2

Đây là các bước tôi đã làm theo và nó đã giải quyết được vấn đề

1) Đã nâng cấp vỏ Power của tôi từ phiên bản 2 lên 3

2) Đóng PM Console

3) Đã khởi động lại Visual Studio

4) Chạy lệnh dưới đây trong PM Console khôi phục dotnet

5) Ban đầu di chuyển bổ sung

Nó đã làm việc !!!


1

Tôi đã gặp sự cố này và không có giải pháp nào trước đây giúp tôi. Sự cố của tôi thực sự là do phiên bản powershell đã lỗi thời trên máy Windows 7 của tôi - sau khi tôi cập nhật lên powershell 5, nó bắt đầu hoạt động.


1

Đi tới bảng điều khiển trình quản lý gói (trong studio trực quan) và thực hiện lệnh dưới đây

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


0

Tôi nghĩ câu trả lời cần được cập nhật vào năm 2017, vì MS đã thực hiện một số thay đổi (phá vỡ) được nêu chi tiết ở đây.

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

Tóm lại, bây giờ bạn sẽ cần tham chiếu đến EntityFrameWorkCore.Tools.DotNet trong Phần Công cụ như bên dưới

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

Tôi cũng đã đăng một tệp project.json đang hoạt động bên dưới trong trường hợp một số tệp chạy gặp sự cố.

{
  "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%" ]
  }
}

Có thể bạn cũng sẽ cần khởi động lại Visual Studio.
Francis

0

Tôi đã thử làm tất cả những điều trên và không có may mắn. Tôi đã tải xuống gói .net core 2.0 mới nhất và chạy lại các lệnh và nó hoạt động.


Hiện tại .net core 2.0 có ổn định không để dự án có thể được nâng cấp từ 1.1.1lên 2.0?
nam

1
.NET Core 2.0 có sẵn kể từ ngày hôm qua 14 tháng 8 năm 2017 dưới dạng bản phát hành cuối cùng. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley

0

Trong trường hợp của tôi, tôi đã thêm phụ thuộc qua Nuget:

Microsoft.EntityFrameworkCore.Tools

Và sau đó chạy qua Bảng điều khiển Trình quản lý Gói:

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

0

Đây là những gì đã làm việc cho tôi: Từ Visual Studio, hãy nhấp vào

Công cụ -> Trình quản lý gói NuGet -> Bảng điều khiển Trình quản lý gói

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể chạy Add-Migration, ví dụ:

Add-Migration InitialCreate
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.