2013-02-26 49 views
13

Chúng tôi đã phát triển một giải pháp lớn chứa ~ 35 dự án với VS 2010, hiện tại chúng tôi đang nghĩ đến việc chuyển sang VS 2012 Ultimate. Tôi đã chuyển đổi tệp giải pháp thành VS 2012 và nói chung, mọi thứ hoạt động tốt.Visual Studio 2012: Dự án không thể tham chiếu

Nhưng bất cứ khi nào tôi mở giải pháp, tôi nhận được một số cảnh báo về một dự án Một số trong các giải pháp: "Dự án X không thể được tham chiếu" "Dự án Y có thể không được tham chiếu" ... trong đó A có dự án-tham chiếu đến X và Y. Khi tôi xây dựng các giải pháp, tôi nhận được lỗi rằng Metadata của từng DLL tương ứng không thể được tìm thấy.

Khi tôi xem các tham chiếu trong trình khám phá giải pháp, chúng được đánh dấu bằng ký hiệu cảnh báo màu vàng. Ngay sau khi tôi chỉ cần nhấp vào tham chiếu, cảnh báo sẽ biến mất và biểu tượng trông bình thường. Sau đó, tôi có thể xây dựng mà không có lỗi!

Sự cố xảy ra mỗi khi tôi mở giải pháp, các dự án bị ảnh hưởng luôn giống nhau.

Có ai khác trải nghiệm hành vi kỳ quặc này không? Việc xóa và thêm lại tham chiếu dự án không giúp được gì ...

Cảm ơn bạn trước.

EDIT: Tôi đã kiểm tra tệp csproj của dự án tham chiếu và tôi tự hỏi rằng tất cả tham chiếu dự án GUID có vấn đề ở trên được viết thường, các dự án khác được viết hoa.

<ProjectReference Include="..\Presentation.Net\Presentation.Net.csproj"> 
    <Project>{04004c6b-76c8-4f2d-9fcf-5a866bb80fd4}</Project> 
    <Name>CMS.Presentation.Net</Name> 
</ProjectReference> 

Trong khi trong giải pháp GUIDs được uppercased:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presentation.Net", "Presentation.Net\Presentation.Net.csproj", "{04004C6B-76C8-4F2D-9FCF-5A866BB80FD4}" 

Bất kỳ ý tưởng?

+0

Phần tham chiếu có cùng giải pháp không? Có thể làm gì với một giải pháp sạch, với những dự án không có sẵn cho đến khi xây dựng xong? –

+0

Các dự án được tham chiếu nằm trong cùng một giải pháp như dự án tham chiếu. Dù sao tôi không bao giờ có những vấn đề với VS10 và cấu trúc giải pháp đã không thay đổi kể từ đó. Làm sạch dung dịch không hiệu quả. – mbue

+0

Hãy cố gắng tránh gọi VS2012 chỉ VS12. Điều này trái ngược với vấn đề mà mọi người gọi nó (trong khi đó là bản Beta) VS2011, bởi vì nó là số phiên bản * là * 11. Vì vậy, nếu/khi có V.Next của Visual Studio, có khả năng (trong khi đó Beta) được gọi là Visual Studio 12. –

Trả lời

3

Điều này đã chỉ cho tôi đúng hướng. Visual Studio 2012 Randomly reporting: "The referenced component X could not be found"

Ít nhất là cảnh báo sẽ biến mất. Phải kiểm tra xem các lỗi siêu dữ liệu có xảy ra lần nữa hay không.

+0

Tôi đã gặp vấn đề tương tự, và nó dường như không cố định trong cả VS2013, mặc dù lỗi Connect cho biết. Nó hiển thị trên dòng lệnh msbuild hoặc trong IDE 2013 là thiếu các lỗi siêu dữ liệu, được gây ra bởi việc không xây dựng các dự án phụ thuộc. Chúng tôi cũng đã không thể tìm ra lý do tại sao một số người nhận được trường hợp trên của guid và những người khác có được trường hợp thấp hơn guid khi thêm refs trong IDE. Cô lập add-in đã không giúp đỡ. Vì vậy: 'sửa lỗi' hiện tại của chúng tôi là viết hoa ref của dự án với một kịch bản PowerShell trên toàn cầu cho csproj của chúng tôi. Đáng yêu. – scobi

3

VS 2012 đã giảm hỗ trợ cho một số loại dự án cũ hơn. Không phải tất cả các loại dự án VS 2010 đều được hỗ trợ trong VS 2012. Ví dụ, các kiểu dự án thiết lập MSI đã được thay thế bằng các kiểu dự án InstallShield LE. Check the compatibility list here và xem có bất kỳ loại dự án lỗi nào của bạn không là vấn đề.

+1

Hi Jordan, dự án tham chiếu là một cửa sổ thực thi, các dự án được tham chiếu là các thư viện lớp. Không thấy bất kỳ vấn đề nào trong danh sách tương thích. – mbue

0

Cố gắng làm sạch dự án/giải pháp và sau đó xây dựng nó.

0

Khi tôi gặp sự cố này, đó là do các phiên bản .NET khác nhau giữa các dự án. Bạn cần đảm bảo rằng dự án bạn đang cố gắng tham chiếu có phiên bản .NET tương thích với dự án hiện tại.

Ví dụ nếu dự án mục tiêu của bạn là NET 4.5.2 và dự án bạn tham khảo là trên 4.6, bạn có thể nhận được lỗi này là dự án tham chiếu đang sử dụng các thành phần dự án hiện tại của bạn không thể truy cập.

Để giải quyết nó, chỉ cần đi đến thuộc tính của dự án đích và chọn phiên bản .NET tương thích chính xác. Đối với tất cả các dự án của tôi trong giải pháp của tôi, tôi duy trì cùng một phiên bản .NET cho mỗi dự án, đặc biệt nếu chúng tham chiếu lẫn nhau.

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