Tại sao tôi nhận được một biểu tượng cảnh báo khi tôi thêm một tham chiếu đến dự án plugin MEF?


321

Tôi muốn kiểm tra lớp lõi của plugin bằng cách tham khảo trực tiếp dự án plugin và khởi tạo lớp plugin. Khi tôi tạo dự án Ứng dụng Console thử nghiệm và thêm tham chiếu dự án vào dự án plugin, tôi nhận được biểu tượng cảnh báo (hình tam giác màu vàng có dấu chấm than) bên cạnh tham chiếu trong danh sách Tài liệu tham khảo.

Thay vào đó, khi tôi thêm một tham chiếu đến dll, đầu ra xây dựng lắp ráp của plugin, tôi không nhận được cảnh báo nào như vậy. Những gì cảnh báo này có thể đang cố nói với tôi?


8
Hầu hết thời gian, các tam giác cảnh báo sẽ có các mẹo về công cụ hoặc (không thành công) một mục trong cửa sổ lỗi. Theo phỏng đoán, hai dự án có sự phụ thuộc không tương thích.
Damien_The_Unbeliever

2
Bất kỳ cảnh báo trong giao diện điều khiển khi cố gắng xây dựng?
Jite

231
Tôi đã thấy điều này với các dự án nhắm mục tiêu các phiên bản framwork .net khác nhau
mhand 22/07/14

4
@OP bạn có thể chọn câu trả lời của kad81 là câu trả lời đúng không
Andy

5
Điều này luôn luôn được tôi. Thêm một dự án mới vào giải pháp .NET 4 và mặc định là 4.5.
Robin Pháp

Câu trả lời:


674

Như đã đề cập trong các nhận xét của câu hỏi, các phiên bản .NET Framework khác nhau giữa các dự án có thể gây ra điều này. Kiểm tra các thuộc tính của dự án mới của bạn để đảm bảo rằng một phiên bản mặc định khác không được sử dụng.


13
Điều tôi cũng cần biết là tại sao phòng thu trực quan chấp nhận thêm các tài liệu tham khảo đó?
Anders Lindén

16
Tôi đang sử dụng VS 2015 và vấn đề vẫn còn đó. Tôi đã mất nửa giờ cho đến khi tôi đến đây.
Alisson

14
thậm chí không có bất kỳ văn bản di chuột hoặc lỗi xây dựng nào giải thích vấn đề là gì
matao

6
Có thể xác nhận rằng đây là gốc rễ của vấn đề. Cũng có thể xác nhận rằng Visual Studio 2017 với bản cập nhật 15.3 vẫn chưa giải quyết được vấn đề không thực sự hiển thị một thông điệp có ý nghĩa. Rất phiền phức.
Greg R Taylor

4
@matao Đồng ý! Thật khó chịu Tôi không thể nhận được bất kỳ chi tiết nào về lỗi này ...
vào

74

Gặp phải vấn đề tương tự với Ứng dụng web ASP.Net và hai dự án lớp thư viện cần được tham chiếu trong Ứng dụng web. Tôi không có thông tin được cung cấp về lý do tại sao việc xây dựng thất bại và các tài liệu tham khảo không hợp lệ.

Giải pháp là đảm bảo tất cả các dự án có cùng Khung mục tiêu:

Trong Visual Studio 2015- Dự án Nhấp chuột phải> Thuộc tính> Ứng dụng> Khung mục tiêu

Lưu, làm sạch và xây dựng lại giải pháp. Các tham chiếu dự án sẽ không còn xuất hiện dưới dạng cảnh báo màu vàng và giải pháp sẽ được biên dịch.

Ứng dụng web của tôi đã nhắm mục tiêu .Net 4.5 trong khi hai dự án lớp thư viện phụ thuộc khác được nhắm mục tiêu .Net v4.5.2


44

Đối với cả hai (hoặc tất cả) các dự án mà bạn muốn sử dụng cùng nhau:

Nhấp chuột phải vào dự án> Thuộc tính> Ứng dụng> Khung .NET đích

Đảm bảo rằng cả hai (hoặc tất cả) các dự án của bạn đang sử dụng cùng một phiên bản .NET framework.


Hoàn hảo, làm việc cho tôi! Tôi đã có một dự án MVC với .NET Framework 4.5.2. Và các thư viện lớp của tôi đang tham chiếu nó là .NET Framework 4.7.
Mike Upjohn

Người ta sẽ nghĩ rằng các dự án mới được thêm vào một giải pháp hiện có sẽ đủ thông minh để biết phiên bản nào, nhưng thật đáng buồn là không phải vậy.
Ron

38
  1. Đảm bảo tất cả các phiên bản đều giống nhau cho từng dự án, nhấp vào từng dự án và xem phiên bản tại đây Project> Properties> Application> Target .NET framework
  2. a. Chuyển đến Công cụ> Trình quản lý gói Nuget> Cập nhật Loại bảng điều khiển Trình quản lý gói -Reinstall (nếu không hoạt động, hãy chuyển sang 2.b )

    b. ĐÂY LÀ SỰ CẦN THIẾT NHƯNG KHẢ NĂNG LỚN NHẤT MÀ THÌ S WOR LÀM VIỆC . Xóa <Target> Có thể có nhiều dòng </ Target> thường được tìm thấy ở phần dưới cùng của .csproj.

  3. Lưu, tải và xây dựng giải pháp.


1
Cảm ơn vì điều đó, một thông báo lỗi hay trong Visual Studio về các phiên bản .Net sẽ không đi lạc hướng ở đây!
colmde

1
@colmde thú vị nếu bạn xóa giải pháp, cửa sổ đầu ra sẽ hiển thị thông báo sau: 'Gói đã được khôi phục bằng .NetFramework XXX thay vì khung đích .NetFramework XXX. Gói có thể không hoàn toàn tương thích với dự án của bạn '
elszeus

1
Phần 2.b mà không được ghi chú trong các câu trả lời khác là rất quan trọng đối với tôi! 2.b Xóa <Target> Có thể có nhiều dòng </ Target> thường được tìm thấy ở phần dưới cùng của .csproj.
Shelbypereira

1
Phần 2.b là hoàn toàn điên rồ nhưng nó hoạt động! cảm ơn
Elo

1
Cảm ơn 2.b cũng đã lừa tôi. Sẽ KHÔNG BAO GIỜ đã tìm ra điều này bản thân mình.
Henrik Clausen

23

Cài đặt lại tất cả các gói trong tất cả các dự án của giải pháp hiện tại:

Update-Package -Reinstall

2
Mặc dù đề xuất này không trực tiếp giải quyết vấn đề của tôi, nhưng nó đã chỉ cho tôi đi đúng hướng cho kịch bản của mình. Đối với những thứ có thể giúp được, tôi thực sự phải thay đổi nguồn gói NuGet của mình thành v3 cho Gói cập nhật để tìm phiên bản phù hợp để tải xuống: docs.nuget.org/consume/package-manager-dialog#package-source
John Lee

1
Nó loại bỏ tất cả các gói, cài đặt chúng và các hình tam giác màu vàng đã trở lại.
Anders Lindén

8

Hãy chắc chắn rằng bạn có các dự án nhắm mục tiêu cùng một phiên bản khung . Hầu hết các lý do sẽ là dự án hiện tại (nơi bạn đang thêm tham chiếu của dự án khác) trỏ đến một phiên bản khung .net khác với các phiên bản còn lại .


5

Kiểm tra NETFramework của dll được giới thiệu & Dự án nơi bạn đang thêm DLL. Ví dụ: DLL ==> hỗ trợRR phiên bản = "v4.0" Dự án ==> hỗ trợR phiên bản = "v3.0"

Bạn sẽ nhận được biểu tượng cảnh báo. Giải pháp: Tạo sự nhất quán phiên bản dll trên.


5

Đối với tôi, tôi gặp phải vấn đề này khi tham khảo thư viện lớp .NET Standard 2.0 trong ứng dụng bảng điều khiển .NET Framework 4.7.1. Có, các khung là khác nhau, nhưng chúng tương thích (.NET Standard được cho là có thể sử dụng được cả .NET Core và .NET Framework.) Tôi đã thử làm sạch, xây dựng lại, gỡ bỏ và làm lại tham chiếu dự án, v.v ... không thành công . Cuối cùng, bỏ Visual Studio và mở lại đã giải quyết vấn đề.


4

Đã lâu rồi kể từ khi câu hỏi này được hỏi nhưng nếu ai đó vẫn quan tâm - gần đây tôi đã chạy vào các biểu tượng tương tự. Tôi đã biên dịch một dự án C # .net bằng cách sử dụng VS 2008. Tôi thấy VS không thể định vị được các hội đồng cho các tham chiếu đó. Khi tôi nhấp đúp chuột, VS đã làm mới các tham chiếu và xóa các biểu tượng trên một số [EDIT: nó có thể NGAY BÂY GIỜ]. Đối với các tài liệu tham khảo còn lại, tôi đã phải biên dịch các hội đồng tương ứng.


4

Thêm 2 xu của tôi vào câu trả lời @ kad81,

Chuyển đến Visual Studio -> BUILD -> Trình quản lý cấu hình

Trong "Nền tảng giải pháp hoạt động" thả xuống ở góc trên cùng bên phải (của tôi là VS 2012), nếu đó là "Nền tảng hỗn hợp", hãy đổi nó thành nền tảng phù hợp dựa trên các hội đồng bên thứ ba tham chiếu của bạn.

Sau đó, trong mỗi dự án trong danh sách, hãy đảm bảo bạn chọn cùng một nền tảng cho tất cả dự án. (nếu x86 không tồn tại, sau đó chọn "", sau đó bạn có thể chọn "x86".)

Xây dựng lại các dự án thư viện trước và sau đó tham khảo các dự án. Hi vọng điêu nay co ich.


4

Hãy thử đóng và mở VS.

Có vẻ ngớ ngẩn nhưng sau 1 giờ làm theo những điều trên và thấy mọi thứ xếp hàng đều ổn. Tôi đã khởi động lại VS 2017 và các vấn đề đã biến mất.


1
Đã làm cho tôi. Ngớ ngẩn hoặc không đôi khi, Visual Studio bị lẫn lộn và bộ nhớ cache của nó bị hỏng. Cảm ơn vì đã gợi ý nó - ghét phải làm điều đó bởi vì tôi cảm thấy ngu ngốc khi nghĩ rằng nó sẽ hoạt động nhưng "cái quái gì" - sau một giờ những thứ khác tôi cũng có thể và nó đã hoạt động
Blake

2

Trong lõi Asp.net đôi khi nó hiển thị cảnh báo nếu bạn thay đổi không gian tên dự án hoặc tên. Để loại bỏ loại cảnh báo này, bạn chỉ cần Unload Project và tải lại. Nếu vấn đề vẫn còn đó có nghĩa là bạn không thể tìm thấy tài liệu tham khảo hội của bạn.


1

Tôi đã có những biểu tượng cho một lý do khác nhau. Chúng tôi có một giải pháp lớn cho tất cả các dự án của chúng tôi (gần 100). Tôi đã thực hiện một tiểu dự án mà tôi quan tâm và thực hiện một giải pháp mới. Tuy nhiên, các tham chiếu trong đó các tham chiếu dự án thay vì các tham chiếu đến dll's đã biên dịch ....

Sau một số nghiên cứu tôi đã tìm thấy liên kết này trên GitHub giải thích đây là hành vi mới trong VS2015.

Trên trang GitHub, họ giải thích một cách giải quyết để chuyển đổi các tham chiếu dự án thành các tham chiếu nhị phân.


1

Để sửa một số công cụ không hoạt động đôi khi có ý nghĩa để xóa một số thư viện, làm thế nào điều đó nghe có vẻ không lạ.

Dù sao, tôi tin rằng vấn đề quá rộng và có thể do các yếu tố khác nhau gây ra , vì vậy muốn chia sẻ tình huống / giải pháp của tôi.

Tôi đã có một dự án (do khách hàng mang đến) với các thư viện Xamarin Forms và Telerik. Điều này nói chung liên quan đến các thành phần, mà các thư viện không được bao gồm trong thư mục gói, cũng không có sẵn thông qua Nuget (trả phí).

Toàn bộ tài liệu tham khảo của dự án là "màu vàng", nó trông khủng khiếp và đáng sợ.

Các giải pháp chỉ là để loại bỏ những Telerik tài liệu tham khảo (trong đó có một vài điều khiển trong mã đó đã được sử dụng đó). Ngay sau đó, tất cả các tài liệu tham khảo kỳ diệu có màu xám bình thường phổ biến của chúng và các lỗi (chủ yếu) biến mất.

"Hầu hết" - bởi vì thông báo lỗi "tất cả màu đỏ xung quanh" về "phần tử không được xác định ở bất cứ đâu" đôi khi vẫn xảy ra. Điều đó thật kỳ lạ và mang đến sự bất tiện, nhưng tôi vẫn có thể biên dịch và chạy (các) dự án: chỉ cần làm sạch giải pháp, khởi động lại Visual Studio, cầu nguyện một chút, làm sạch lại, xóa thư mục obj / bin, khởi động lại và hoạt động tốt

Điều quan trọng là loại bỏ các tài liệu tham khảo thư viện không có sẵn , vì các thông báo lỗi nói hoàn toàn là một thứ khác. (Ví dụ: một cái gì đó như "Xamarin.Build.D Download.XamarinDoadArchives không tìm thấy hoặc không thể tìm thấy thứ gì đó", v.v., nhưng điều đó có thể có nghĩa là bạn không có sẵn một số tài liệu tham khảo.

Sau đó xóa thư mục gói, tải lại / mở lại dự án / giải pháp, đi đến "Quản lý gói Nuget" và nhấp vào nút "Khôi phục".


1

Sử dụng Visual Studio 2019 với tất cả các dự án nhắm mục tiêu .Net Core 3.1, giải pháp là:

  1. Làm sạch / Xây dựng / Xây dựng lại.
  2. Khởi động lại Visual Studio 2019

0

Tôi cũng gặp phải vấn đề tương tự nhưng trường hợp của tôi hơi khác những người ở trên. Tôi đã cố mở một dự án được tạo trong một máy tính khác. Tôi thấy rằng đường dẫn đến thư mục gói không được cập nhật khi bạn thêm một tham chiếu để khởi động lại VS, thay đổi phiên bản .NET hoặc bất kỳ đề xuất nào được đề cập không giải quyết được vấn đề. Tôi đã mở tệp csproj trong notepad ++ và sửa tất cả các đường dẫn tương đối đến thư mục gói. Sau đó; tất cả các cảnh báo đã biến mất Hy vọng nó giúp.



0

Cảm ơn tất cả các bạn đã giúp đỡ. Đây là một sự cố về cách tôi khắc phục vấn đề của mình:

Nhấp chuột phải vào dự án của bạn> Thuộc tính

Trong Ứng dụng thay đổi Khung mục tiêu. Trong trường hợp của tôi, ImageSharp đã sử dụng .Net 4.6.1. Bạn có thể tìm thấy điều này trong gói của bạn.

Đi đến tài liệu tham khảo dự án của bạn. Bạn sẽ nhận thấy SixLabors có hình tam giác màu vàng. Bạn phải cập nhật gói NuGet.

Nhấp chuột phải vào Tài liệu tham khảo> Quản lý gói NuGet.

Cập nhật SixLabors.

Bạn có thể có các cập nhật mã nhỏ (xem bên dưới) nhưng điều này đã khắc phục vấn đề của tôi.

Chuyển đổi ImageSharp.Image thành ImageSharp.PixelFormats.Rgba32?


0

Trong Visual Studio 2019, một trong những khung mục tiêu dự án của tôi là lõi .net nhưng nó đã tham chiếu một dự án khác có khung mục tiêu là .net tiêu chuẩn. Tôi đã thay đổi tất cả các dự án để tham chiếu tiêu chuẩn .net và các biểu tượng đã biến mất. Để xem dự án của bạn là gì, nhấp chuột phải vào nó và nhấp vào các thuộc tính và nhìn vào khung Target. Bạn cũng có thể bình thường nhấp vào chính dự án và xem thẻ <TargetFramework> trong <Propertygroup>


0

Trong một giải pháp đa dự án, Nếu mọi thứ khác đều thất bại ... Trên dự án startUp, hãy kiểm tra. Phụ thuộc-> Lắp ráp và xem dự án tham chiếu có lỗi không. Hủy bỏ nó và xây dựng lại.

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.