2011-07-08 44 views
25

Tôi có một ứng dụng wpf mà tôi đang cố gắng tham chiếu đến thư viện lớp mà tôi đã tạo. Tôi đã thêm một tham chiếu đến .dll Và tôi đã thêm câu lệnh đang sử dụng vào tệp của mình và intellisense thực sự thấy không gian tên mới.Không thể tìm thấy loại hoặc không gian tên, khi tham chiếu không tồn tại

Sau đó, trong mã của tôi, tôi có thể tạo đối tượng mới của các lớp trong tệp .dll đã thêm của tôi. intellisense thấy tất cả các phương pháp vv .. không có vấn đề, không có lỗi.

khi tôi cố gắng xây dựng ứng dụng wpf của mình, đột nhiên tôi nhận được loại hoặc không gian tên không thể tìm thấy lỗi trên dll đã thêm của tôi.

Sau đó, tôi nhận được lỗi bất cứ khi nào tôi đang cố tạo đối tượng từ tệp .dll đó.

Tôi không hiểu những gì đang xảy ra .. tại sao nó hoạt động trước khi tôi xây dựng, nhưng khi tôi xây dựng nó quyết định nó không biết nơi mà tôi đang tham chiếu dll?

Ngoài ra tôi đã chuyển đến thư viện lớp học mà tôi đang cố gắng thêm và đảm bảo rằng nó xây dựng mà không có lỗi.

+3

đảm bảo rằng tham chiếu dll không dành cho khung cấp cao hơn dự án của bạn. tức là 3.5 dự án tham chiếu 4.0 dll –

Trả lời

60

Nguyên nhân phổ biến nhất của việc này là .DLL của bạn nhắm mục tiêu Khuôn khổ .NET đầy đủ, nhưng Ứng dụng WPF nhắm mục tiêu Hồ sơ khách hàng.

Ví dụ: nếu thư viện của bạn nhắm mục tiêu .NET 3.5, hãy đảm bảo rằng ứng dụng WPF của bạn nhắm mục tiêu khung .NET 3.5 hoặc 4.0 đầy đủ, chứ không phải hồ sơ khách hàng.

+6

Microsoft nên cung cấp cho liên kết này như là một mẹo giải pháp, thay vì thông báo lỗi chung mà không có ý nghĩa gì cả. –

+0

Tương tự như vậy, tôi đã nhận được lỗi này khi tham chiếu dự án .NET 4.5 từ dự án .NET 4 – mao47

0

Bạn có thể Sao chép bất kỳ tệp .dll nào từ dự án khác, hai tệp .dll. ví dụ: A.dll, A.pdb và Đổi tên hai tệp này thành tên dự án của bạn.

Sau đó, bạn có thể xây dựng lại dự án này.

+2

anh ấy đã bao gồm các tệp dll, nhưng bản dựng của anh ấy không thành công. câu trả lời của bạn không trả lời câu hỏi đó. – pascalhein

5

Một vài suy nghĩ về vấn đề này mà bạn có thể thử:

  • Kiểm tra xem một phiên bản thấp hơn không được gọi một phiên bản lắp ráp cao hơn (ví dụ .NET 3.5 dự án không được gọi một assembly .NET 4.0).

  • sạch -> Xây dựng (hoặc Rebuild)

  • tay xóa bin/obj thư mục của cả hai dự án kêu gọi người gọi và. Điều này buộc mọi thứ phải được xây dựng - cách 'cứng'. Điều này nghe có vẻ dư thừa, nhưng đã làm việc cho tôi một vài lần.

  • Khởi động lại VS - đôi khi, không chỉ giải thích.

  • Khởi động lại - khi không có công trình nào khác hoạt động, hãy tạm dừng và thử lại.

+0

Xin cảm ơn, nhưng câu hỏi này đã gần ba tuổi và được giải quyết khi tôi chọn câu trả lời đúng là sửa chữa. – twaldron

+1

Tôi chỉ để lại điều này ở đây trong trường hợp nó giúp ai đó :) – Joel

+1

@twaldron Khoản 1 trong danh sách kiểm tra này là những gì đã khắc phục cùng một vấn đề với tôi. =) –

0

Nếu bạn nhận được điều này mà không có DLL - chỉ cần kiểm tra tệp mã được thiết lập để biên dịch. Trong Visual Studio 2013, tôi tiếp tục thêm các tệp mã và nó đặt Hành động Xây dựng (được tìm thấy trong phần Nâng cao của Thuộc tính của tệp mã thành "Nội dung" thay vì "Biên dịch" .Thay đổi điều này:

0

Đôi khi đặt tên rõ ràng của hội đồng có chứa không gian tên là bắt buộc.

xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssembly" 

Tôi không biết tại sao đôi khi đôi khi được yêu cầu.

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