2009-06-05 30 views
16

Tôi đã sao chép ba lớp từ một dự án WPF khác và sau đó thay đổi không gian tên.Sau khi thay đổi không gian tên trong tệp UserControl, ... tệp g.cs gặp lỗi

Bây giờ khi tôi chạy dự án, tôi nhận được các lỗi trong các tệp ".g.cs" có nghĩa là không gian tên không chính xác. Tôi thay đổi không gian tên này nhưng khi tôi biên dịch và chạy lại, các tệp ".g.cs" được tạo lại và ghi đè bằng phiên bản không gian tên cũ và tôi lại gặp lỗi.

các tập tin là gì và làm thế nào tôi có thể làm cho họ được tái sinh từ hiện file thay vì một số bộ nhớ cache mà nó rõ ràng giữ ở đâu đó?

Tôi đã xóa thư mục \ bin và \ obj và xây dựng lại nhưng vẫn gặp lỗi.

Trả lời

33

Tệp .g.cs được tạo từ tệp .xaml. Bạn cần thay đổi thuộc tính x: class = trong tệp .xaml của bạn để khớp với tên lớp đủ điều kiện không gian tên mới; sau đó tệp .g.cs sẽ được tạo chính xác trên bản dịch tiếp theo. (Đừng tự thay đổi các tập tin .g.cs - bạn sẽ chỉ làm thất bại chính mình.)

Ví dụ, nếu trước đó bạn đã có trong cs của bạn:

namespace Foo { 
    class Bar { ... 

và điều này ở bạn .xaml:

<UserControl x:Class="Foo.Bar" ... 

Và sau đó bạn thay đổi không gian tên của bạn:

namespace Baz { 
    class Bar { ... 

sau đó, bạn sẽ cần phải thay đổi .xaml của bạn file to:

<UserControl x:Class="Baz.Bar" ... 
+1

đó là nó: chỉ cần để chnage các x: class = mục và tất cả đã tốt một lần nữa, cảm ơn! –

1

Bạn có cập nhật không gian tên của lớp trong thuộc tính x:Class trên UserControl trong XAML không?

Nếu không, bạn đã thử xây dựng lại dự án chưa?

9

Tôi thấy đây là một chủ đề cũ, nhưng vì người dùng thỉnh thoảng vẫn gặp phải vấn đề này, tôi nghĩ mình sẽ ném vào một nguyên nhân khác. Nếu bạn có bất kỳ xmlns: xx không gian tên nào trong xaml mà bạn bỏ qua để cập nhật khi thay đổi không gian tên, thì điều này cũng sẽ gây ra một tuyên bố sử dụng không hợp lệ trong tệp g.cs.

+0

+1 Đây là nguyên nhân của tôi. Tự động tạo ra 'xmlns: local =" clr-namespace: Some.App.Namespace "' không chính xác và trỏ đến không gian tên thte sai. – finlaybob

5

Tôi đã tìm thấy một cách khác để giải quyết vấn đề này bằng cách xóa thư mục 'obj' của bạn và xây dựng lại.

+0

Tôi đã có tất cả tốt tại địa phương và không trên máy chủ xây dựng - đã phải đăng nhập vào máy chủ xây dựng và xóa các thư mục obj ... –

+0

Cảm ơn bạn, đã làm việc cho tôi – Artiom

2

tôi đã định nghĩa các phím tắt không gian tên XML trong AssemblyInfo.cs tôi

[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")] 

nơi không gian tên cũ là vẫn còn hiện diện. Tìm kiếm thông qua tất cả các tệp * .xaml của tôi rõ ràng không giúp được ...

Sau khi sửa các phím tắt, lỗi sẽ biến mất ngay lập tức.

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