2017-08-13 22 views
9

Tôi đang cố gắng chạy lệnh Add-Migration InitialCreate từ bảng điều khiển trình quản lý gói từ ứng dụng .NET Core 2.0 MVC. Sau khi xem xét tất cả các nguồn có thể vẫn không thể giải quyết vấn đề với mô tả lỗi như:Cách thêm một triển khai IDesignTimeDbContextFactory để thêm di chuyển vào ứng dụng .Net core 2.0?

PM> Add-Migration InitialCreate 

An error occurred while calling method 'BuildWebHost' on class 'Program'. Continuing without the application service provider. Error: Method not found: 'System.Collections.Generic.Dictionary 2<System.String,System.Object> Microsoft.Extensions.Configuration.IConfigurationBuilder.get_Properties()'. System.IO.FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.TryAddCoreServices() at Microsoft.Extensions.DependencyInjection.SqlServerServiceCollectionExtensions.AddEntityFrameworkSqlServer(IServiceCollection serviceCollection) at Microsoft.EntityFrameworkCore.Infrastructure.Internal.SqlServerOptionsExtension.ApplyServices(IServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServices(IDbContextOptions options, ServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>b__2(Int64 k) at System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory) at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options) at MvcMovie.Models.MvcMovieContext..ctor(DbContextOptions 1 options) in C:\Users\Neha\source\repos\MvcMovie\MvcMovie\Data\MvcMovieContext.cs:line 12 at MvcMovie.ToDoContextFactory.CreateDbContext(String[] args) in C:\Users\Neha\source\repos\MvcMovie\MvcMovie\ToDoContextFactory.cs:line 17 at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func 1 factory) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0 1.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

My Program.cs trông giống như:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .UseApplicationInsights() 
      .Build(); 

     host.Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .Build(); 
} 

Cũng được thêm vào thực hiện cho

IDesignTimeDbContextFactory

public class ToDoContextFactory : IDesignTimeDbContextFactory<MvcMovieContext> 
{ 
    public MvcMovieContext CreateDbContext(string[] args) 
    { 
     var builder = new DbContextOptionsBuilder<MvcMovieContext>(); 
     builder.UseSqlServer("Server=(local);Database=MvcMovieContext;Trusted_Connection=True;MultipleActiveResultSets=true"); 
     return new MvcMovieContext(builder.Options); 
    } 
} 

Ai đó có thể giúp tôi với một bước mô tả theo bước thủ tục để thêm công cụ mô hình và thực thể khung cho một ứng dụng .NET Core2.0.

+1

Làm thế nào chuỗi kết nối này có thể được đọc từ ứng dụng .settings.json để không được mã hóa cứng ở đây một lần nữa? – borisdj

+0

Tìm thấy Giải pháp để đọc từ .json: https://stackoverflow.com/questions/45796776/get-connectionstring-from-appsettings-json-instead-of-being-hardcoded-in-net-co – borisdj

Trả lời

9

Bạn cần thay đổi chương trình lớp học của bạn

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

này lớp changed với lõi DotNet 2.0.0

+0

Đã khắc phục sự cố tương tự Tôi đã có. –

+0

Tại sao tôi nhận được một 'WebHost không tồn tại trong bối cảnh hiện tại' lỗi? – RemarkLima

+3

Tôi không biết làm thế nào, nhưng tôi đã thiếu gói 'Microsoft.AspNetCore'! – RemarkLima

2

Đã xảy ra sự cố tương tự. Nó xảy ra sau khi tôi cập nhật Microsoft.AspNetCore.All từ 2.0.0-preview2-final thành 2.0.0. Đoán lý do tại sao nó không thành công là tôi đã cài đặt .NET Core Preview 2.

EFCore cũng đã được cập nhật. Vì vậy, vui lòng đảm bảo rằng bạn có cùng phiên bản dành cho máy chạy bộ và thời gian chạy

Cập nhật: Hiện hành .NET Core và SDK 2.0 phát hành https://www.microsoft.com/net/download/core. Sau khi cài đặt bạn có thể an toàn cập nhật các gói của bạn để 2.0.0

Các vấn đề liên quan