2010-11-17 18 views
8

Trước đây tôi đã có một thư mục con trong dự án ứng dụng WPF của tôi được gọi là "Điều khiển". Nó chứa một điều khiển người dùng WPF. Tôi quyết định di chuyển điều khiển người dùng đó sang thư mục "Chế độ xem" của mình. Vì thư mục gốc trống, tôi quyết định xóa nó khỏi dự án.WPF: g.cs File Pain

Vì kiểm soát người dùng và thư mục bị xóa, tôi nhận được lỗi biên dịch do điều khiển người dùng sử dụng không gian tên ProjectName.Folder và bây giờ không có gì tham chiếu đến nó. MainWindow.g.cs là những gì tham khảo ProjectName.Controls trong một tuyên bố sử dụng.

Tôi biết rằng * .g.cs được tạo bởi VS và không thể chỉnh sửa được vì nó sẽ bị ghi đè. Tôi phải làm gì để không cho phép không gian tên đó được ghi vào tệp g.cs? Tôi đã thử làm sạch giải pháp/dự án của tôi và xây dựng lại nhưng không có gì đã làm việc.

Trả lời

12

Tôi đã tham chiếu cục bộ đến không gian tên Điều khiển trong mã Xaml của tôi (MainWindow.xaml). Tôi đã xóa tham chiếu, làm sạch dự án và tạo một bản dựng thành công.

+1

tôi đã cùng một vấn đề, nhưng nhiều hơn nữa sâu hơn. Tôi đã sử dụng không gian tên cũ trong ResourceDictionary được tham chiếu. – chopikadze

+0

cảm ơn bạn. tôi đã có cùng một vấn đề. – Naresh

+0

Bạn là vua @chopikadze chính xác là vấn đề của tôi, tôi đã tìm kiếm hàng giờ mà không có may mắn cho đến khi tôi đạt được bình luận nhỏ của bạn ... –

1

Tôi đã gặp sự cố với tệp g.cs trong các dự án của mình trước đây. Vì chúng được tạo tự động, tôi có xu hướng chỉ xóa tệp theo cách thủ công và tạo lại.

+0

tham chiếu trong tương lai: bạn có thể xóa các tệp "cũ" bằng cách làm sạch dự án hoặc giải pháp. – jlafay

+0

@jlafay, cảm ơn. Đôi khi tôi quên điều đó vì những vấn đề tôi có với Clean trong giải pháp hiện tại của dự án. – Jason

5

Trong tập tin điều khiển người dùng của bạn,

Trong ClassName.xaml của bạn, bạn phải thay đổi không gian tên như hình dưới đây

<UserControl 
    x:Class="YourOldNamespace.ClassName" 
    ... 
    ... 
/> 

Và trong ClassName.xaml.cs của bạn, bạn phải thay đổi không gian tên như được hiển thị bên dưới

using System; 
using System.Windows; 

namespace YourOldNamespace{ 

    public class ClassName{ .... 

} 

Trong cả hai tệp, bạn phải thay thế YourOldNamespace thành một số không gian tên mới nếu cần.

+0

Xin lỗi tôi đã quên bao gồm thông tin đó trong câu hỏi của tôi. Tôi đã thay đổi không gian tên một cách thích hợp trong các tệp điều khiển xaml & cs. Vấn đề là MainWindow.xaml của tôi đã tham chiếu đến không gian tên cũ và đó là lý do tại sao MainWindow.g.cs có một câu lệnh sử dụng được tạo ra cho không gian tên cũ. Tôi đã sửa xaml và nó hoạt động tốt. – jlafay

1

Đừng quên quá, bạn phải kiểm tra xem thuộc tính Build Action khi bạn nhấp vào tệp XAML bị ảnh hưởng được đặt thành PAGE (thay vì tài nguyên). Điều này rất hữu ích khi biết khi bạn sao chép XAML từ một dự án khác bằng cách sử dụng copy-paste để tiết kiệm thời gian.

1

Cũng xem App.xaml và tất cả các từ điển tài nguyên của bạn. Vì lý do gì, VS 2012 thay thế tệp/tùy chọn "Toàn bộ giải pháp" không tìm thấy tham chiếu không gian tên cũ trong App.xaml, phải tự thay đổi điều đó. Sửa lỗi cho tôi.

0

Đừng quên để thay đổi tập tin Generic.xaml của bạn quá,

<ResourceDictionary 
        xmlns:local="clr-namespace:MyOldNameSpace"> 
</ResourceDictionary>