tên <…> không tồn tại trong không gian tên clr-namespace <…>


84

Tôi có một ứng dụng WPF nhỏ được sử dụng để biên dịch tốt nhưng không còn nữa. Tôi thực sự không thể nói nó ngừng xây dựng vào thời điểm nào. Nó chỉ hoạt động tốt một ngày, và ngày hôm sau thì không.

Đây là cấu trúc dự án:

nhập mô tả hình ảnh ở đây

Không có dự án hoặc tài liệu tham khảo bên ngoài nào khác ngoài .net dlls tiêu chuẩn.

Đây là quyền kiểm soát của người dùng nơi bắt nguồn sự cố:

<UserControl x:Class="TimeRecorder.HistoryUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:TimeRecorder.ViewModel"
         xmlns:framework="clr-namespace:TimeRecorder.Framework"
         mc:Ignorable="d" Height="Auto" Width="Auto" Padding="5">
<UserControl.Resources>
    <local:HistoryViewModel x:Key="ViewModel"/>
    <framework:BoolToColorConverter x:Key="ColorConverter"/>
</UserControl.Resources>
<StackPanel DataContext="{StaticResource ViewModel}">

Và đây là lỗi tôi nhận được: http://i48.tinypic.com/5u1u8w.png

Xin lưu ý rằng đây không chỉ là một tệp trong ảnh chụp màn hình, mà tất cả các tham chiếu tôi thêm theo kiểu tương tự trong xaml trong tất cả các tệp điều khiển / cửa sổ của người dùng trong dự án này.

Vì vậy, tệp ở đó, không gian tên trong tệp là chính xác, không gian tên / tên lớp trong tệp xaml (theo sự hiểu biết của tôi) chính xác. Tôi nhận được intellisense khi tôi nhập xaml để nó tìm thấy các tệp ổn sau đó nhưng không phải khi nó biên dịch.

Giải pháp phổ biến nhất cho vấn đề này trong các bài viết khác là phiên bản khung .net. Nó hiện được đặt thành .Net Framework 4 cho cả dự án chính và dự án thử nghiệm của tôi. Phiên bản đầy đủ không phải là hồ sơ khách hàng.

Đây là những gì tôi nghĩ rằng tôi đã nhầm lẫn : Trong trình quản lý cấu hình, cả hai dự án đều đặt Nền tảng của họ thành Bất kỳ CPU nào, nhưng tại một thời điểm khi cố gắng giải quyết vấn đề này, tôi nhận thấy rằng dự án chính được đặt thành x86 và dự án thử nghiệm được đặt thành Bất kỳ CPU. Vì vậy, tôi đã thêm Bất kỳ CPU nào theo cách thủ công cho dự án chính trong trình quản lý cấu hình. Tuy nhiên, tôi thực sự không biết liệu tôi đã làm điều này đúng hay thậm chí tôi có nên làm điều đó hay không. Vì vậy, là một câu hỏi bổ sung, có cách nào tôi có thể đặt lại trình quản lý cấu hình về trạng thái mặc định của nó không? Điều này sẽ có bất cứ điều gì để nói cho vấn đề chính? Tôi không biết có phải dự án chính luôn được đặt thành x86 hay không hoặc bằng cách nào đó tôi đã thay đổi nó thành x86 và sau đó nó bị hỏng. Như đã đề cập, dự án này đã được biên dịch tốt trong một thời gian.


FYI, bạn có thể đọc ProgressTimeSpentUserControl.xaml. Bạn có thể muốn làm một công việc tốt hơn để làm mờ nó;)
It’sNotALie.

Không có vấn đề gì :) Nó chỉ là một tập tin tạm thời tôi đã được thử nghiệm một số nội dung, nếu có như những người khác là một phần của dự án với thuộc xem các mô hình để OCD của tôi nói với tôi để đánh dấu nó như là không có liên quan;)
Ardal

2
Tôi đã gặp sự cố tương tự cách đây 2 ngày - tôi đã nhầm lẫn với trình quản lý cấu hình đang cố gắng đặt mọi thứ để xây dựng là 'bất kỳ cpu nào' thay vì x86 và nó đã ngừng xây dựng. Tôi thấy rằng tôi đã làm được hai điều - thứ nhất là tôi đã để nó ở chế độ phát hành và thứ hai là trình quản lý cấu hình xây dựng, trong một số trường hợp, lắp ráp không được đánh dấu để xây dựng. Cách khắc phục của tôi là đi qua mọi chế độ có sẵn (x86, nền tảng hỗn hợp và bất kỳ cpu nào) và thiết lập tất cả các lắp ráp để xây dựng. Nghe có vẻ như một trong những điều mà bạn sẽ tự đá mình vì không nghĩ đến khi bạn phát hiện ra điều gì sai!
Jay

Câu hỏi tương tự (có câu trả lời đang hoạt động): stackoverflow.com/questions/28216096/…
Oleksa

Đối với bất kỳ ai đến đây vào năm 2018 .NET 4.6.1, tôi đã khởi động lại VS, sau đó xây dựng lại và nó bắt đầu hoạt động. Chắc chắn đã dành nhiều thời gian hơn tôi nên nghĩ rằng tôi đã đánh chữ o ở đâu đó.
Mwspencer

Câu trả lời:


143

Mỗi khi điều đó xảy ra với tôi, tôi chỉ khởi động lại studio trực quan, xây dựng lại giải pháp và nó hoạt động tốt .. không thể nói tại sao


17
Một điều cần thêm - chỉ khi tôi khởi động lại VS với quyền quản trị, dự án xây dựng thành công. Với quyền thông thường, ngay cả việc khởi động lại và xây dựng lại giải pháp cũng không giúp ích được gì.
Tạm ngừng

1
Chỉ cần lưu giải pháp đang gây ra sự cố. Khởi động VS ở chế độ quản trị và bắt đầu "xây dựng lại tất cả" từ tệp giải pháp. nó đã làm việc. rất ma quái.
pollaris

12
Đáng buồn là 5 năm sau điều này vẫn chưa được giải quyết. Với VS 2017, vấn đề tương tự cũng tồn tại và giải pháp tương tự vẫn hoạt động!
CodeHacker

@gil kr Tôi đã gặp vấn đề tương tự với xamarin và XML của nó. Tôi thấy việc di chuyển dự án từ một thư mục được nối mạng sang một thư mục cục bộ đã khắc phục được sự cố. Tôi tự hỏi nếu đó là trường hợp ở đây.
vdidxho

3
Nó không giải quyết được vấn đề của tôi, ngay cả khi bắt đầu với quyền Quản trị viên.
MindRoasterMir

30

Ngoài thông báo "không tồn tại trong không gian tên", tôi cũng nhận được thông báo từ nhà thiết kế rằng nó không thể hiển thị cửa sổ cho các mục tiêu x64 và ARM.

Tôi vừa thấy rằng việc chuyển bản dựng sang chế độ x86, thực hiện giải pháp xây dựng lại, sau đó chuyển trở lại chế độ x64 và sau đó xây dựng lại sẽ khắc phục được [cả hai] sự cố.

Đơn giản chỉ cần xây dựng lại giải pháp x64 không làm gì cả.


5
Còn một bước nữa. Bạn phải xây dựng lại thành x86 và sau đó mở xaml trong trình thiết kế. Và chỉ sau đó quay lại x64.
Dzienny

2
Tôi đã thử khởi động lại visual studio sau đó xây dựng lại nhưng vẫn gặp lỗi tương tự. @Jerry - giải pháp của bạn là giải pháp phù hợp với tôi trong VS2012.
Barrie

Jerry, nghe có vẻ khó hiểu nhưng giải pháp của bạn có hiệu quả! Tôi đã biên dịch dự án của mình cho AnyCPU nhưng bằng cách nào đó được biên dịch theo x86 sau đó lại giải quyết được vấn đề này. Tôi nghi ngờ AnyCPU có thể quay trở lại x86 nhưng do lỗi trong VS, phần mã đó không được xây dựng trừ khi biên dịch nó theo x86.
Wayne Lo

Có, mọi lỗi KHÁC ngoài lỗi "không tồn tại trong vùng tên" phải được giải quyết trước tiên.
pollaris

Vẫn xảy ra với tôi trong VS2017. Đóng và mở lại VS không hoạt động. Nhưng giải pháp của bạn đã làm được.
Gordon Slysz

14

Những gì tôi thấy đã giúp ích (đặc biệt nếu lỗi này xảy ra trong App.xaml) là nhận xét (các) tham chiếu gây cho bạn sự cố, xây dựng lại, sau đó bỏ ghi chú. Tôi nghĩ những gì điều này làm là cho phép toàn bộ dự án thực sự xây dựng thay vì dừng xây dựng do lỗi.

Từ những gì tôi có thể thu thập, ứng dụng đang cố gắng tạo các tệp theo một thứ tự nhất định, vì vậy khi App.xamlhoặc có lẽ là bất kỳ lỗi tệp lớp nào khác trong một tham chiếu, tệp gây ra lỗi không được biên dịch chính xác, do đó, tại sao nó không không tìm thấy tệp trong không gian tên đó.


3
Bạn đã có ý tưởng ngay khi bạn nói: the app is trying to build the files in a certain order. Điều này khiến tôi xem xét .csprojhồ sơ của mình . Đã có App.xaml.csở vị trí đầu tiên. Sau đó, tôi đã di chuyển nó dưới tệp hiển thị lỗi này, xây dựng lại và lỗi đã biến mất. CẢM ƠN!
Stephan

Giải pháp này hiệu quả với tôi trong khi những giải pháp khác thì không. cảm ơn
RamWill

12

Đây là những gì đã làm việc cho tôi trên Visual Studio 2012 (Cập nhật 3).

  • Khởi động lại Visual Studio
  • Thêm assembly hiện tại vào khai báo vùng tên xmlns:framework="clr-namespace:TimeRecorder.Framework;assembly=MyAssembly
  • Build -> Build Solution

đã làm việc cho tôi VS2015 Professional update3, cảm ơn :)
EricG

Có thể xác minh, nó cũng hoạt động trên Visual Studio 2019.
20

9

Xây dựng lại giải pháp của bạn (đôi khi sạch sẽ sau đó xây dựng công trình tốt hơn). Sau đó, hãy xem danh sách lỗi của bạn, cuộn xuống dưới cùng và rất có thể nó sẽ chỉ ra lỗi không cho phép biên dịch hợp ngữ của bạn và trình biên dịch XAML rất có thể đang sử dụng phiên bản đã lưu trong bộ nhớ cache của hợp ngữ chứ không phải phiên bản mới bạn nhé. nghĩa là xây dựng.


7

Tôi đã có vấn đề tương tự. Trong trường hợp của tôi, tôi phải làm như sau

  • xóa đánh dấu tham chiếu khỏi xaml (trong ví dụ này, <local:HistoryViewModel x:Key="ViewModel"/>)
  • xây dựng Lớp (trong tệp ví dụ này có chứa HistoryViewModellớp)
  • Sau khi được xây dựng, hãy thêm đánh dấu tham chiếu trong xaml
  • xây dựng lại

Phương pháp trên đã làm việc cho tôi.


Xem câu trả lời của tôi để hiểu tại sao điều này đã khắc phục sự cố của bạn.
jaysoncope

6

Điều gì phù hợp với tôi: - Chuyển cấu hình giải pháp từ Gỡ lỗi sang Bản phát hành - Chuyển lại cấu hình từ Bản phát hành sang Gỡ lỗi


Thật kỳ lạ. Điều này cũng làm việc cho tôi. Các bản dựng sạch trong mỗi bản phát hành cũng vậy.
GeoffCoope

4

Gặp phải vấn đề này ngay hôm nay với Visual Studio 2017 Community Edition. Đã thử tất cả các đề xuất ở đây (đặt lại VS 2017, thay đổi từ x64 thành x32 và quay lại lần nữa, v.v.) và từ các nguồn khác nhưng không có kết quả. Intellisense biết mọi thứ đều ở đó nhưng tôi luôn gặp lỗi tương tự.

Dù sao, cách khắc phục của tôi hóa ra rất đơn giản ... không phải lúc nào chúng cũng xảy ra khi bạn đã dành vài giờ cho vấn đề!

Về cơ bản, tôi đã làm như sau ...

  1. Xóa mã vi phạm khỏi tệp xaml (chỉ 3 dòng trong trường hợp của tôi)
  2. Xây dựng dự án để bạn có được một công trình thành công
  3. Tại thời điểm này, bố cục xuất hiện một cách kỳ diệu trong cửa sổ thiết kế, đó là một dấu hiệu tốt!
  4. Đã chèn lại mã mà tôi đã xóa ở điểm 1. bao gồm mục nhập xmlns:
  5. Tại thời điểm này, bạn sẽ không nhận được bất kỳ hình vuông màu xanh nào ... hy vọng
  6. Xây dựng lại dự án

Có vẻ như bằng cách xây dựng thành công, nó phải thiết lập lại 'thứ gì đó' trong VS và / hoặc assembly. Khi bạn đã xây dựng thành công, hãy thử chèn lại mã của bạn.


Đây thực sự là điều duy nhất phù hợp với tôi. Đây là lý do tại sao tôi ghét VisualStudio với XAML. Kiểu chơi hacky này với cấu hình là không thể chấp nhận được.
Goku

3

Không có giải pháp nào phù hợp với tôi. Tôi đã sửa nó theo cách này:

  • Xóa dll của thư viện khỏi Tài liệu tham khảo
  • Tải xuống mã nguồn của thư viện (thay vì chỉ tệp dll)
  • Xây dựng dự án của thư viện để lấy tệp dll mới
  • Thêm tệp dll mới vào Tài liệu tham khảo của dự án chính

3

Đã có vấn đề này đi vòng tròn lãng phí một vài giờ. Tôi đã chuyển một dll điều khiển người dùng riêng biệt vào dự án để nó được biên dịch trong dự án và không phải là một dll được tham chiếu. Điều này đã phá vỡ toàn bộ dự án nên sau đó tôi đã kiểm tra tỉ mỉ tất cả các không gian tên, đường dẫn và tên tệp. Đã thử xóa các tệp obj, thay đổi giữa phát hành và gỡ lỗi, giữa x86 và AnyCPU. Mở lưu tất cả, biên dịch lại vẫn không có niềm vui.

Hãy nhớ rằng đã từng gặp sự cố tương tự trước đây, lỗi được gắn cờ trong VS2013 không liên quan trực tiếp đến nơi tôi phải sửa đổi XAML mà bằng cách sử dụng

x:Name="myControl"

trên tất cả các điều khiển, thay vì

Name="myControl"

đã sửa nó.


Vừa bị phát hiện với cùng một vấn đề một lần nữa, bỏ dấu x: Lưu ý điều này chỉ xảy ra với quyền kiểm soát người dùng của riêng tôi.
Moon Waxing

Bạn là người hùng của tôi.
Holden

3

Tôi đã thay đổi Target Framework Ứng dụng của tôi là ".Net Framework 4.5" thành ".Net Framework 4.6" và nó đã hoạt động!


Tôi đã thay đổi mục tiêu của mình từ 4.6.1 thành 4.6 và điều đó cũng hoạt động.
GisMofx

2

Đây là một ví dụ kỳ lạ về một điều tương tự:

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent">
...
</UserControl>

sẽ biên dịch (VS2013).

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent"
         IsVisibleChanged=onIsVisibleChanged>
...
</UserControl>

tạo ra lỗi "type Ui not found in Gtl.Ui.Gtl" (và tôi đảm bảo với bạn rằng phương thức xử lý tồn tại trong đoạn mã phía sau). Công việc xung quanh là thêm trình xử lý trong phương thức khởi tạo lớp, nhưng Microsoft ơi, wtf đang diễn ra?


Tôi không đồng ý với ý kiến ​​trên. Loại "mở rộng ngữ cảnh" này thường hữu ích để xác định nguyên nhân của một lỗi như vậy, mà không CHỈ do các điều kiện của OP gây ra.
CJBrew

2

Tôi gặp phải vấn đề tương tự khi cố gắng gọi không gian tên trong xaml. cho thấy rằng lớp không có sẵn trong không gian tên. Tôi đã tìm kiếm rất nhiều. Cuối cùng tôi thấy vấn đề này là với VS. Tôi đang sử dụng VS 2013. Tôi đã thử các bước dưới đây:

  1. Xây dựng -> Trình quản lý cấu hình -> Nền tảng Giải pháp Hoạt động -> Đã thay đổi thành x64 và x86 và Bất kỳ CPU nào.
  2. Đóng VS và mở lại.
  3. Thay đổi

    xmlns:VM="clr-namespace:MyFirstAppViewModel"
    

    đến

    xmlns:VM="clr-namespace:MyFirstAppViewModel;assembly=ViewModel"
    

2

Lỗi này thường xảy ra khi dự án không được xây dựng thành công trong lần xây dựng cuối cùng.

Bước-1) Trước tiên, hãy xóa tất cả mã gây ra lỗi khỏi tệp XAML hoặc .cs và xây dựng & bắt đầu dự án bằng cách nhấn F5.

Bước-2) Thêm lần lượt thêm mã gây lỗi của bạn vào XAML.


1
  • tôi muốn giới thiệu Đổi tên x:Key="ViewModel"có thể có trục trặc
  • và nếu bạn gõ local:VS có hiển thị cho bạn HistoryViewModelkhông?
  • cũng kiểm tra xem của bạn Classpublic


1

Tôi thấy rằng việc chạy lệnh "Run Code Analysis" sẽ xây dựng lại mọi thứ và hầu như luôn khắc phục được sự cố (nhấp chuột phải vào dự án> Phân tích> Chạy phân tích mã). Điều này cũng thường xây dựng lại các tệp tài nguyên để có thể tìm thấy các chuỗi, v.v.


Ngoại trừ, như tôi đã tìm thấy gần đây, ngay cả điều này sẽ không hoạt động. Tôi đã phải đóng VS và khởi động lại. Ồ, tốt ...
Jeff

1

Đã thử tất cả các giải pháp trên chủ đề này nhưng không có giải pháp nào hoạt động. Hóa ra là do cấu hình giải pháp. Ứng dụng WPF của tôi được thiết lập để xây dựng cho X64 do một số phụ thuộc gốc yêu cầu nó nhưng cấu hình giải pháp vẫn được đặt thành AnyCPU cho dự án. Tạo cấu hình X64 mới cho dự án trong trình quản lý cấu hình giải pháp cho phép nhà thiết kế XAML cuối cùng nhận ra kiểu và không gian tên của tôi.


1

Trước khi thêm không gian tên vào tệp .xaml của bạn, hãy đảm bảo rằng bạn không gặp bất kỳ lỗi biên dịch nào do mã hiện có.

Khi tất cả các kiểm tra biên dịch đều OK, hãy xây dựng lại giải pháp của bạn và thử thêm không gian tên bắt buộc để sử dụng lớp hoặc thuộc tính của nó.


0

Đây là một vấn đề lặp đi lặp lại đối với tôi. Một trong những lần tôi tìm thấy giải pháp khi nhìn vào tab Cảnh báo . Đó là sự cố về phiên bản .NET framework và nó đã nêu như sau:

Cảnh báo 9 Không thể giải quyết tham chiếu chính "myDll" vì nó được xây dựng dựa trên khuôn khổ ".NETFramework, Version = v4.5.2". Đây là phiên bản cao hơn so với khung hiện tại được nhắm mục tiêu ".NETFramework, Version = v4.0".


0

Có một trục trặc với bộ đệm bố cục đối tượng của chúng. Nếu bất cứ thứ gì được đổi tên hoặc di chuyển, nó sẽ bị mất. Điều thường làm đối với tôi là tạo một lớp hoàn toàn mới và sao chép tất cả mã cũ, làm cho nó hoạt động trên lớp mới, sau đó xóa lớp gốc. Đôi khi sau khi bạn thiết lập và chạy với tên lớp mới, bạn có thể thử đổi tên lại thành tên ban đầu (nhưng thường là không)


0

Tôi đang sử dụng xmlns: local = "using: MyRootNamespace.ChildNamespace" ở tiêu đề của .xaml và tôi đã biến nó thành xmlns: local = "clr-namespace: MyRootNamespace.ChildNamespace" ... tốt, tôi cứ để intellisense làm công việc và nó đã hoạt động.


0

Vấn đề là khi bạn tạo mục tiêu x86, đường dẫn đầu ra cho dự án cụ thể được đặt thành bin \ x86 \ Debug. Có vẻ như pha trộn Biểu thức không thích điều này chút nào. Nó dường như chỉ quan tâm đến những gì trong bin \ Debug.

Nếu bạn đã thay đổi (các) đường dẫn đầu ra của mình cho dự án x86 thành bin \ debug chẳng hạn, thì tôi chắc chắn rằng bạn sẽ thấy nó sẽ hoạt động. Chà, dù sao cũng phù hợp với tôi :)


0

Khung mục tiêu của tệp .dll bạn thêm vào phải giống với Khung mục tiêu của ứng dụng của bạn.


0

Tôi đã phải đối mặt với cùng một vấn đề. Bạn gặp lỗi này nhưng vẫn có thể xây dựng dự án của mình thành công, Điều bất tiện là bạn không thể nhìn thấy giao diện người dùng thiết kế (hoặc chỉ muốn làm sạch mã và loại bỏ các đường lung tung gây phiền nhiễu). Đọc nhiều bài là thử vài thứ nhưng làm theo tác phẩm như một cái duyên.

Đã thử điều này trong Visual Studio 2019:

Nhấp chuột phải vào Giải pháp của bạn -> Thuộc tính -> Thuộc tính cấu hình, sau đó thay đổi cấu hình dự án từ Gỡ lỗi thành Phát hành hoặc ngược lại.

Sau đó, xây dựng lại giải pháp của bạn. Nó có thể giải quyết vấn đề của bạn.

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.