Tên hoặc không gian tên không tồn tại [đã đóng]


318

Tôi có một dự án Dịch vụ dữ liệu WCF được xây dựng với Visual Studio 2010, hoạt động tốt. Đột nhiên, nó không còn được biên dịch nữa. Nó đã cho tôi những tin nhắn như:

Lỗi 7 Loại tên hoặc không gian tên 'Dịch vụ' không tồn tại trong không gian tên 'System.Data' (bạn có thiếu tham chiếu lắp ráp không?) C: \ U ... s \ Visual Studio 2010 \ Project ... \ DataService. cs ...

Lỗi 8 Loại tên hoặc không gian tên 'Linq' không tồn tại trong không gian tên 'Hệ thống' (bạn có thiếu tham chiếu lắp ráp không?) DependencyResolver.cs 3 14

Lỗi 10 Loại tên hoặc không gian tên 'Web' không tồn tại trong không gian tên 'System.ServiceModel' (bạn có thiếu tham chiếu cụm không?)

Lỗi 12 Không thể tìm thấy tên loại hoặc không gian tên 'DataService' (bạn có thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp không?)

Làm thế nào tôi có thể sửa chữa nó?


4
ngay cả sau khi thêm chúng, các thông báo lỗi vẫn còn
Attilah

18
Điều này rất hữu ích với tôi. Tôi không biết tại sao nó bị đóng cửa.
người dùng gmail

2
Hãy nghĩ rằng bởi vì mặc dù các câu trả lời rất hữu ích, nhưng câu hỏi ban đầu rất cởi mở và không liên quan đến bất kỳ ai khác, mặc dù các câu trả lời có
WongKongPhooey

48
Này, nhìn kìa! Một câu hỏi hữu ích về SO. Oh, đợi đã, nó lạc đề. Nhưng nó có một số lượng lớn các upvote và một câu trả lời với nhiều upvote hơn. Một cái gì đó chắc chắn là "tắt" ở đây, nhưng đó không phải là câu hỏi này.
Jagd

3
Làm thế nào mà những người bỏ phiếu để đóng lỗi này lại bỏ lỡ lỗi rất cụ thể trong câu hỏi ("Tên loại hoặc không gian tên không tồn tại trong không gian tên")? Tôi đã có một vấn đề tương tự và đã thông báo lỗi đó và câu hỏi này là kết quả hàng đầu. Vì vậy, câu hỏi không mơ hồ chút nào.
Simon Tewsi

Câu trả lời:


619

Tôi đã có cùng một vấn đề và tôi phải đặt "Khung mục tiêu" của tất cả các dự án là giống nhau. Sau đó, nó được xây dựng tốt. Trên menu Project, bấm vào ProjectName Properties. Nhấp vào tab biên dịch. Nhấp vào Tùy chọn biên dịch nâng cao. Trong Khung mục tiêu, chọn khung mong muốn của bạn.


13
Tôi đặt "Khung mục tiêu" bằng cách nhấp chuột phải vào dự án trong trình khám phá giải pháp và chọn thuộc tính. Khung mục tiêu sẽ hiển thị trong tab Ứng dụng mặc định.
Cookie

4
@jaminator Đây là một giải pháp trong một số trường hợp. Ít nhất là trong tôi. Vì một số lý do, dự án của tôi đã từ chối chấp nhận một không gian tên tồn tại từ cùng một giải pháp. Vấn đề là ứng dụng giao diện điều khiển đã nhắm mục tiêu hồ sơ khách hàng.
Amadiere

3
Làm việc cho tôi quá. Xảy ra khi tôi thêm một dự án WPF (Hồ sơ khách hàng .NET 4) và tham chiếu dự án thư viện lớp (.NET 4). Cảm ơn nhiều !!
Tamas Iovy

58
+1 cho điều này. Thông báo lỗi sai lầm khủng khiếp. Có lẽ đã tiết kiệm cho tôi hàng giờ cố gắng để tìm ra nó. Xin chào Microsoft về việc "không thể nhập không gian tên BLAH vì BLAH là phiên bản không tương thích" nhưng sau đó tôi đoán nó sẽ cướp đi của Nathan trong số 184 lượt upvote.
Gerald Davis

3
Có cách giải quyết nào cho các trường hợp chúng ta không thể thay đổi Khung mục tiêu của các dự án không?
Raj123

43

Tôi gặp sự cố với System.Linq không được công nhận. Các usingtuyên bố đã quyết đỏ nguệch ngoạc vv Con đường tôi giải quyết nó là để thay đổi trang web của tôi để mục tiêu DotNet 3.5, sau đó chuyển về khuôn khổ mục tiêu ban đầu (4.0 trong trường hợp của tôi).


2
Làm việc cho tôi quá! Nhưng tôi đã phải làm điều đó hai lần ... đi con số!
nicholeous

Sau khi hợp nhất thủ công một số tệp web.config của các khung đích khác nhau cho cùng một ứng dụng, web.config đã ngừng hoạt động và tôi gặp phải 500 Lỗi Máy chủ Nội bộ. Sau khi đặt lại như mô tả, một số cài đặt cũ đã được Visual Studio 2012 tự động xóa khỏi web.config và sau đó ứng dụng hoạt động trở lại.
humbads

Có một vấn đề tương tự, tôi nghĩ rằng một số phiên bản khung nhất định không nhận ra System.Linqlà một thư viện hợp lệ
Callat

3
Cảm ơn bạn. Thật nực cười khi chủ đề này đã bị đóng vì điều này cũng giúp tôi sau khi lãng phí một giờ cố gắng tìm hiểu tại sao chức năng và tài liệu tham khảo của tôi ngừng hoạt động đột ngột. Tài liệu tham khảo thất bại đối với tôi là system.man Quản lý.automation.dll
Bbb

Đó thực sự là một phép thuật. Giống như Mobile Honor 8X mới của tôi, trong đó đôi khi thay đổi cài đặt không có hiệu lực ngay lập tức. Để nó hoạt động bình thường, tôi phải chuyển đổi qua lại nhiều lần.
Harish NInge Gowda

28

Tôi thấy rằng điều này là do tôi có cùng tên không gian tên với tên lớp ( MyWorld.MyWorld = Namespace.ClassName).

Thay đổi không gian tên của bạn thành một tên không cùng tên với lớp của bạn và điều này sẽ biên dịch.

Nguồn


6
Để giải quyết nó chỉ cần tiền tố Windows.Whatevervớiglobal::
joshcomley

20

Tôi gặp vấn đề tương tự với một trang web ASP.NET MVC khi tôi cố gắng sử dụng LINQ to SQL . Tôi đã khắc phục sự cố bằng cách:

Solution Explorer -> Tài liệu tham khảo -> Nhấp chuột phải vào System.Data.Linq -> Sao chép cục bộ (True)


17

Kiểm tra xem khung mục tiêu của bạn có cùng phiên bản .NET không. Tôi có cùng một vấn đề và lớp .NET của tôi là 3,5 và giải pháp web có 4,5. Tôi đã đồng bộ hóa chúng, và sau đó nó hoạt động :)


16
điều này chỉ lặp đi lặp lại điểm được thực hiện và giải thích trong câu trả lời trước đó đã được đăng vài tháng trước ngày này
gnat

12

Tôi đã có cùng một vấn đề và đã thử tất cả những điều trên mà không có bất kỳ thành công nào, sau đó tôi đã tìm ra nó là gì:

Tôi đã tạo một thư mục có tên "Hệ thống" trong một trong các dự án của mình và sau đó tạo một lớp trong đó. Vấn đề dường như xuất phát từ việc có một không gian tên gọi là "Hệ thống" khi tệp .cs được tạo, ngay cả khi nó nằm trong một không gian tên của "MyProject.System".

Nhìn lại tôi có thể hiểu tại sao điều này sẽ gây ra vấn đề. Nó thực sự làm tôi bối rối lúc đầu vì các thông báo lỗi ban đầu dường như không liên quan đến vấn đề.


1
Tôi đã có vấn đề này là tốt, để tham khảo. Sẽ thật tuyệt nếu có một thông báo lỗi giải thích hơn trong công cụ, nhưng ồ.
Nick

3
Tôi đã đăng một cái gì đó lên MSDN, nhưng MS nói đó không phải là lỗi. Tôi sẽ không tranh luận với điều đó nhưng tôi hy vọng họ sẽ hiểu làm thế nào nó có thể gây ra vấn đề.
GrandMasterFlush

1
Đó là sự gian dối ...
Jitka Darbie Hzignerová

12

Tôi đã gặp vấn đề tương tự với System.Data.SQLite. Nguồn gốc của vấn đề là dll bạn đã sử dụng nên có cùng phiên bản .NET với dự án của bạn.

Ví dụ: nếu bạn đã sử dụng (trong trường hợp của tôi) SQLite cho .NET 4.5, mục tiêu nền tảng của bạn cũng phải là .NET 4.5.

Bạn có thể tìm mục tiêu nền tảng bằng cách: Project> (tên dự án) Thuộc tính> Build.


1
Điều này đã giải quyết một vấn đề tôi vừa có. Thông báo lỗi không hữu ích lắm ngoài việc cho bạn biết DLL nào là vấn đề.
PointlessSpike

7

Trong trường hợp của tôi, vấn đề đã xảy ra vì lớp tôi tạo có một không gian tên can thiệp vào các lớp hiện có. Lớp A mới có không gian tên zz.yy.xx (do nhầm lẫn). Các tham chiếu đến các đối tượng trong một không gian tên khác yy.xx không được biên dịch trong lớp A hoặc các lớp khác có không gian tên là zz.

Tôi đã thay đổi không gian tên của lớp A thành yy.xx, cái mà lẽ ra nó phải có, và nó bắt đầu hoạt động.


5

ĐỐI VỚI MỌI NGƯỜI CÓ PHIM LIÊN KẾT: Tôi gặp vấn đề này và đang sử dụng silverlight và tệp vi phạm đang ném lỗi này là một tệp được liên kết.

Lỗi từ trình biên dịch cho tôi biết lỗi đã xảy ra trong dự án mà tệp tồn tại. Cuối cùng, lỗi KHÔNG phải ở dự án đó, nó đã xảy ra trong dự án có chứa tệp được liên kết. Dự án đó đã thiếu một tài liệu tham khảo.


Tôi gặp vấn đề này với dự án .NET 4 khi sử dụng System.Man Quản lý. Tự động khi thử nghiệm dự án với Visual Studio 2013 trên Windows 10. Nâng cấp dự án lên .NET 4.5.1 đã khắc phục sự cố.
Malcolm McCaffery

2

Tôi gặp phải vấn đề này khi sử dụng tích hợp Git của Visual Studio để quản lý dự án. Vì một số lý do, dự án Windows Phone 8 sẽ biên dịch tốt khi nhắm mục tiêu x86, nhưng khi tôi đặt nó vào mục tiêu ARM, nó sẽ không biên dịch với lỗi cho biết "Quảng cáo" không tồn tại trong không gian tên của Microsoft.

Cuối cùng tôi đã giải quyết vấn đề bằng cách xóa Microsoft.Ad Quảng cáo. *. Dll tham chiếu và thêm lại.


1

Trong trường hợp của tôi, không có thay đổi nào trong các dự án, nó chỉ dừng lại để biên dịch và với "kiểu hoặc tên không gian tên XXX không tồn tại" và trong chính lớp khiếu nại, không gian tên / lớp XXX hoạt động tốt. Vấn đề là trong tài liệu tham khảo thực sự!

Các bước để tái sản xuất:

  1. Giải pháp có ProjectA, ProjectB. Tham chiếu ProjectA đến log4net của bên thứ ba và nó được đánh dấu Copy local: true. Tham chiếu ProjectB ProjectA và không có tham chiếu đến log4net. Giải pháp biên dịch tốt.

  2. Thay đổi trong ProjectA: thuộc tính tham chiếu cho log4net thành Copy local: false.

  3. Làm sạch các thư mục bin và obj.
  4. Khi bạn biên dịch, ProjectA biên dịch nhưng ProjectB phàn nàn về việc không tìm thấy không gian tên ProjectA.

This is because ProjectB thư mục bin bị thiếu thư viện bên thứ ba (log4net in my case)!

Trong trường hợp này, giải pháp sẽ là -

  1. đảm bảo rằng các tham chiếu thư viện của bên thứ ba được đặt thành Copy local: true hoặc
  2. thêm đường dẫn đến các thư viện như vậy trong thuộc tính dự án theo đường dẫn tham chiếu.

1

Tôi đang tham khảo Microsoft.C CommerceServer.R.78.Order và gặp lỗi này. Dự án này đã cũ và có khung Target .NET 2.0. Trong đầu ra tôi đã có lỗi này:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Tôi chỉ đơn giản là thay đổi khung mục tiêu thành .NET 4 và bây giờ nó được xây dựng.


1

Và nếu tất cả các cách khác đều thất bại, chẳng hạn như đảm bảo rằng các khung đích giống nhau và bạn đang xử lý thư viện lớp WPF trong VS2010, chỉ cần khởi động lại Visual Studio. Điều đó đã làm nó cho tôi.


trong trường hợp của tôi vs2010, một tham chiếu dll có lỗi, tôi đã nhập lại tham chiếu dll và nó có vẻ tuyệt vời, nhưng sau khi xây dựng type namespace errorxảy ra. Và tôi khởi động lại studio hình ảnh, sau khi tôi khởi động lại, lỗi dll ban đầu lại hiển thị và tôi lại tiếp tục, và xây dựng lại, thành công.
yu yang Jian

0

Tôi đã trải qua những lỗi tương tự. Sau khi tôi phát hiện ra dự án của mình có tên hội sai (tôi đã sao chép các tệp từ một dự án khác và các không gian tên có một chút nhầm lẫn), và thay đổi lại, dự án được biên dịch độc đáo.


Mặc dù vậy, đây là vấn đề của tôi! Cảm ơn.
SteveCav

0

Tôi đã nhận được một thông báo lỗi rất giống nhau do vô tình tạo ra một bản sao của một lớp trong một dự án khác của giải pháp của tôi. Xóa trùng lặp đã khắc phục sự cố


0

Gần đây tôi cần phải thực hiện Khôi phục hệ thống và nó đã khiến một số tệp của tôi thay đổi / biến mất mà tôi đã làm việc kể từ khi khôi phục. Một số trong số đó là các tập tin DLL. Tôi đã sử dụng Kiểm soát nguồn để truy xuất toàn bộ dự án nhưng tôi vẫn gặp sự cố tương tự như trên. Tôi tìm thấy câu trả lời này mô tả rằng bạn có thể cần phải xóa một DLL và tập hợp lại để sửa lỗi của bạn. Đây là trường hợp trong kịch bản của tôi.

Loại bỏ WebMatrix.WebDatavà làm lại nó cũng như thêm vào đã WebMatrix.Datasửa lỗi của tôi The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....


-3

Xóa tệp .refresh.dll nếu bạn đang kiểm soát nguồn. Sau đó xây dựng lại. Nó nên hoạt động. Điều này làm việc cho tô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.