2016-05-23 32 views
8

Tôi hiện đang sử dụng ASP.NET Core MVC RC2, giả sử để hỗ trợ tham chiếu đến một dự án thư viện khung đầy đủ từ một Dự án Ứng dụng Web MVC Core. Nhưng tôi không thể làm cho nó hoạt động được.Tham khảo Dự án Thư viện Toàn khung từ Ứng dụng Web ASP.NET Core MVC (RC2)?

Tôi có một dự án thư viện khung đầy đủ hiện có mà tôi muốn sử dụng với một dự án ứng dụng Web MVC mới. Nhưng khi tôi cố gắng thêm một tham chiếu đến dự án của thư viện, tôi nhận được một lỗi nói rằng khung đích cho nó không tương thích với khung mục tiêu cho ứng dụng web.

Để cố gắng đơn giản hóa vấn đề tôi đã tạo ứng dụng web Core MVC mới và Thư viện mã Windows mới và cố gắng thêm tham chiếu từ dự án ứng dụng web vào dự án của thư viện và nhận được thông báo lỗi tương tự. Tôi đã tìm kiếm trên tràn ngăn xếp và tôi đã tìm thấy câu hỏi này có vẻ có liên quan cao: How to make ASP.NET Core RC2 app build on net46 framework with older third party dependencies nhưng tôi không thể sử dụng thông tin đó để giải quyết vấn đề của mình.

Dưới đây là các bước để tạo lại vấn đề:
Tôi tạo ra một giải pháp với một "NET Core" 'ASP.NET Lõi Web Application' dự án dựa trên 'Ứng dụng Web mẫu' trong Visual Studio 2015.

[pic 1

[pic 2

sau đó tôi đã thêm một mới "Windows" "" dự án class Library vào dung dịch.

enter image description here

Vì vậy, vào thời điểm này là giải pháp trông như thế này:

pic 4

Bây giờ, khi tôi cố gắng sử dụng visual studio để thêm tài liệu tham khảo từ các ứng dụng Web Lõi MVC để Framework Full thư viện Tôi nhận được một lỗi nói rằng "ExampleLib có một khung mục tiêu không tương thích với các mục tiêu trong dự án hiện tại ExampleWebApplicaiton.":

enter image description here

Lỗi này có vẻ khá tự giải thích và dường như muốn tôi thay đổi khuôn khổ mà ứng dụng web đang nhắm mục tiêu sao cho nó giống với thư viện, mang lại ý nghĩa hoàn hảo. Vấn đề là tôi không thể tìm thấy tài liệu về cách làm điều đó và intellisense không được đặc biệt hữu ích.

tôi nghi ngờ tôi cần phải thay đổi một trong những phần sau của tập tin project.json cho ứng dụng web:

"dependencies": { 
    "Microsoft.NETCore.App": { 
    "version": "1.0.0-rc2-3002702", 
    "type": "platform" 
    }, 

hoặc

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

Làm thế nào để xác định .NETFramework Version 4.6 cho Core Ứng dụng web MVC thay vì .NETCoreApp?

Trả lời

4

Có một mẫu cho phép bạn nhắm mục tiêu khuôn khổ .NET đầy đủ - xin lỗi, không thể đăng hình ảnh, nhưng bạn có thể truy cập: Mẫu -> Visual C# -> Web -> ASP.NET Core Ứng dụng web (.NET Framework)

Lưu ý rằng bạn có thể chỉ định phiên bản.NET Framework từ trình đơn thả xuống ở trên (như thường lệ).

này sẽ thay đổi project.json của bạn để:

"frameworks": { 
"net461": { } 
} 

(tùy theo phiên bản khuôn khổ mà bạn đã chọn). Bây giờ bạn sẽ có thể thêm một tham chiếu đến thư viện lớp học của bạn.

"frameworks": { 
    "net461": { 
    "dependencies": { 
    "ClassLibrary1": { 
     "target": "project" 
     } 
    } 
    } 
} 
+0

Tôi đã tìm ra cách tiếp cận với một người nào đó ở Microsoft có tên abpiskunov trong chủ đề này https://github.com/aspnet/Tooling/issues/45 nhưng tôi thích cách tiếp cận của bạn tốt hơn nếu tôi có thể truy cập công việc. Khi tôi chọn '.NET Framework 4.5.1' trong danh sách thả xuống cho hộp thoại New Project và chọn ASP.NET Core Web App, project.json dường như bỏ qua nó và chứa" frameworks ": { " netcoreapp1.0 ": { "nhập khẩu": [ "dotnet5.6", "dnxcore50", "xách tay-net45 + win8" ] }} , –

+1

Nhưng nếu tôi tự sửa project.json phần khuôn khổ để bao gồm "net461" VÀ tôi loại bỏ '" Microsoft.NETCore.App "từ phần phụ thuộc ở đầu tệp, sau đó tự khôi phục gói, sau đó sử dụng Visual Studio để thêm tham chiếu dự án của tôi, THEN tự khôi phục gói, tôi có thể làm cho nó công việc. Về mặt lý thuyết, việc khôi phục các gói phần mềm theo cách thủ công là không bắt buộc nhưng trong thiết lập của tôi, vì lý do nào đó mà vẫn chưa rõ ràng. –

+0

Một lưu ý nữa, đối với tôi, sử dụng phương pháp này để tham khảo Dự án Thư viện Lớp Windows chỉ hoạt động nếu dự án được tạo bằng Visual Studio 2015 Update 2 của tôi bằng cách sử dụng công cụ RC2, nó không hoạt động cho Dự án Thư viện Lớp Windows được tạo năm trước . Cách giải quyết? Tạo một dự án thư viện lớp Windows mới, thêm các tệp mã hiện có của bạn vào nó và bây giờ VS sẽ cho phép một tham chiếu đến nó bằng cách sử dụng các bước trong câu trả lời ở trên và các nhận xét của tôi. Chúc mừng! –

1

Theo các bước của Ron C đây là project.json hoàn chỉnh cho dự án api web tôi vừa kiểm tra và đã hoạt động.

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "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" 
    }, 

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

    "frameworks": { 
    "net461": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ], 
     "frameworkAssemblies": { 
     "System.Data": "4.0.0.0" 
     } 
    } 
    }, 

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

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

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

    "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 
Các vấn đề liên quan