2012-12-12 36 views
10

Trong Visual Studio 2012 tại một trống Class Library mới Tôi cố gắng để thêm tham chiếu đến một dự án hiện có trong dung dịch, cũng là một Class Library, MonoGame.Framework.Windows8 (https://github.com/mono/MonoGame), nhưng nhận được lỗi:Visual Studio 2012 Làm thế nào để gỡ lỗi "Không thể thêm tham chiếu đến dự án x" lỗi?

Unable to add reference to Project MonoGame.Framework.Windows8

Tôi đã xây dựng thư viện hiện có, MonoGame, thành công và biến nó thành sự phụ thuộc của thư viện mới. Điều gì có thể là vấn đề?

(Đó là cực kỳ khó chịu được thông báo lỗi không đưa ra một lý do!)

+1

Bạn có thể thử dùng msbuild (từ dấu nhắc lệnh của Visual Studio). –

+0

im không quen thuộc với msbuild - có lẽ tôi sẽ phải tự chỉnh sửa tệp .csproj để thêm tham chiếu vào dự án khác trước? – markmnl

Trả lời

11

Cố gắng thêm dll xây dựng có một tham chiếu đã đưa ra một thông báo lỗi rõ ràng hơn mà đã giải quyết vấn đề đối với tôi, nó nói:

“A reference to ‘x’ could not be added. The project targets ‘.NetFramework’ while the file reference targets ‘.NetCore’. This is not a supported scenario”

Các MonoGame Class Library là một Class Library (Windows Store ứng dụng) kiểu! (Bit trong ngoặc đơn là quan trọng! Có lẽ sự khác biệt là loại ứng dụng Windows Store sử dụng. Net Core không giống như .Net Framework).

Vì vậy, để làm cho nó hoạt động, dự án của bạn phải là một thư viện lớp (ứng dụng Windows Store) có sẵn trong tùy chọn Windows Store trong Thêm dự án mới.

+0

Được xé tóc của tôi ra khỏi này. Nó khá lén lút! Cảm ơn! – NibblyPig

7

tôi nghi ngờ vấn đề là để làm với 'Khung mục tiêu' trong các tùy chọn dự án.

Tôi không biết MonoGame hoạt động như thế nào đối với Windows 8 nhưng khi bạn đang phát triển cho Android, các tùy chọn khung mục tiêu là các phiên bản khác nhau của Android [ví dụ: Android 2.2 (Froyo)]. Khi bạn tạo một thư viện lớp thông thường, bạn có các lựa chọn giữa các phiên bản khác nhau của khung công tác .NET hoặc Mono [ví dụ: Mono/.NET 4.0].

Thật không may, các khung công tác này không tương thích với nhau. Bạn không thể thêm tham chiếu dự án cho Android vào thư viện lớp .NET framework và visa-versa.

Giải pháp là sử dụng Portable Class Library. Chúng được thiết kế đặc biệt để giải quyết vấn đề này. Nhược điểm là bạn sẽ chỉ có quyền truy cập vào tập hợp con của các assembly được cung cấp trong mẫu số thấp nhất mà bạn chọn để nhắm mục tiêu.

Bạn cũng có thể muốn xem xét việc chia sẻ mã giữa các dự án sử dụng tệp được liên kết. Nó có thể làm cho việc bảo trì phức tạp hơn một chút nhưng cho phép bạn kiểm soát nhiều hơn một chút mã nên biên dịch trong cả hai khung đích nhưng không phù hợp với thư viện lớp di động. Dưới đây là một câu hỏi liên quan:

Project reference vs. file links in Mono multi-target projects

Chìa khóa để tất cả điều này khi bạn hiểu những gì đang xảy ra ở đây là cách bạn cấu trúc giải pháp của bạn. Với một chút cẩn thận, bạn có thể có gần như tất cả mã của mình được chia sẻ trên các nền tảng khác nhau.

2

Tôi có thể là do cả hai dự án đang sử dụng các phiên bản Framework khác nhau và thay đổi các phiên bản Framework trong cả hai dự án thuộc tính phần sau đó vấn đề của bạn có thể giải quyết.

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