2012-04-19 27 views
12

Vì lý do nào đó trong dự án hiện tại của tôi, tôi tạo tệp tài nguyên của mình thông qua thuộc tính dự án, thêm một tải hình ảnh hiện có. Sau đó đi để thêm những hình ảnh này vào các mục menu, lưu nó. Tại thời điểm này tất cả mọi thứ có vẻ tốt và tất cả các hình ảnh được ánh xạ chính xác.Visual Studio 2010 Winforms giữ tài nguyên bị quên

Tuy nhiên khi tôi đóng được thiết kế riêng cho các hình thức đó, sau đó mở nó lên tôi nhận được hộp thoại báo lỗi nói:

The type 'My.Project.Properties.Resources' has no property named 'icon_plus'.

Điều gây phiền nhiễu được rằng nếu bạn làm theo nó thông qua vào mã không có lỗi, nó biên dịch tốt:

this.newToolStripMenuItem.Image = global::My.Project.Properties.Resources.icon_plus; 

Tôi đã thử xóa tất cả tài nguyên và xóa tệp tài nguyên khỏi dự án, đóng hoàn toàn IDE rồi tải lại. Tôi đã di chuyển vị trí của các tập tin, nhưng tôi chỉ ra khỏi ý tưởng và nó là REALLY bắt đầu để grate với khoảng 10 hình thức và điều khiển mà mỗi cung cấp cho tôi lỗi này họ loại bỏ các biểu tượng từ giao diện người dùng.

Trả lời

4

Đây là một trong những vấn đề RẤT gây phiền toái, mà tôi sẽ không bao giờ nghĩ đến cho đến khi tôi gặp một vấn đề khác khiến tôi thay đổi mọi thứ.

có vẻ như đã nằm xuống ứng dụng bằng cách sử dụng Hồ sơ khách hàng cho .net 4 thay vì chỉ là thời gian mặc định .net 4. Một khi tôi thay đổi điều này về vấn đề này dừng lại và vấn đề không gian tên còn thiếu của tôi mà gần đây phát sinh đã biến mất.

17

Xem tài liệu tham khảo dự án và xóa tham chiếu đến bản thân.

+1

Tuyệt vời! Giải pháp này làm việc cho tôi. Tôi đã gặp vấn đề tương tự như Grofit. Tôi nhìn vào Tài liệu tham khảo và thấy rằng dự án của tôi đã tham khảo chính nó. Tôi không biết chuyện đó xảy ra như thế nào khi tôi không nhớ là đã tự mình đặt nó ở đó. VS có tự động thêm tham chiếu này hoặc nhắc người dùng không? Có vẻ như một lỗi khá nổi tiếng hay chỉ là tôi? –

+0

@DerekW Tôi chưa thể xác định được tại sao hoặc khi Visual Studio làm điều này, tôi chỉ có thể đoán đó là một loại lỗi nào đó. –

+1

Hoàn hảo! Giải pháp này cũng làm việc cho tôi! Chưa kể, nó dường như cải thiện thời gian tải của ứng dụng của tôi bởi rất nhiều! Điều này tất nhiên có thể là một sự trùng hợp ngẫu nhiên. –

2

Có nhiều khả năng nhất để làm với xung đột Không gian tên.

Kiểm tra kỹ tất cả các không gian tên trong dự án, VS thích làm 'ProjectName.FolderName'. Nếu nó tự động thay đổi một trong các lớp/tệp tài nguyên trong thư mục Biểu tượng của bạn thành ProjectName.Icon, nó có thể xung đột với tên lớp/cấu trúc.

Điều thú vị là ứng dụng xây dựng ..

+0

Tôi nghĩ điều này, nhưng khi tôi xóa tất cả mọi thứ (thư mục chứa tài nguyên, tệp tài nguyên thực và bất kỳ tham chiếu đến và từ nó) sau đó tạo lại nó, tôi đã thêm chúng lại từ dự án và để nó đặt chúng bất cứ nơi nào nó muốn. Vẫn cùng một vấn đề, và không có không gian tên tài nguyên trong giải pháp khác với giải pháp mà chính nó tạo ra cho các tài nguyên đã nói. – Grofit

+0

+1 nếu bạn có thể, cố gắng tách nó xuống (thành một dự án xương trần) cho đến khi vấn đề được nhìn thấy rõ ràng. –

0

Tôi đã vượt qua lỗi này trước đây. Nó phát sinh cho tôi khi tôi thêm một nguồn tài nguyên, và sau đó lấy nó đi hoặc bị nhốt nó. Cách duy nhất tôi tìm thấy tôi có thể nhận được xung quanh vấn đề này là bằng cách mở tập tin .csproj và tìm kiếm .ico rằng nó đưa ra lỗi và loại bỏ nó. Bạn đang tìm kiếm

<ItemGroup> 
    <None Include="Resources\SomeResource.ico" /> 
</ItemGroup> 

Sau đó, lưu tệp. Mở giải pháp và thêm lại. Hy vọng rằng điều này sẽ làm việc cho bạn. Tuy nhiên, lưu ý, đây không phải là giải pháp lý tưởng.

Edit:

OK. Vì vậy, điều này đã không giải quyết vấn đề của bạn. Đi vào thư mục giải pháp và điều hướng đến thư mục 'Thuộc tính'. bên trong bạn sẽ thấy một tệp được gọi là tài nguyên. Mở nó và cố gắng tìm tên tệp có vấn đề của bạn

<data name="YourNamedIco" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\Resources\SomeResource.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, 
     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
</data> 

nếu bạn tìm thấy, hãy xóa mục này, lưu.

Tôi hy vọng điều này sẽ hữu ích.

+0

Tôi đã xóa tất cả các loại tài liệu tham khảo này trong khi tôi đã xóa mọi thứ khác, nó không có sự khác biệt, khi tôi mở lại dự án và thêm chúng trở lại thông qua hộp thoại VS hiện có, nó chỉ hoạt động theo cách tương tự ... – Grofit

+0

Tôi đã chỉnh sửa câu trả lời để cung cấp một thứ khác để thử. Tất cả các tốt nhất ... – MoonKnight

+0

Một lần nữa tôi đã cố gắng tự mày mò với tập tin này, đã tự xóa các resources.resx hoặc bất cứ điều gì nó được gọi và sau đó tạo ra nó từ đầu và thêm chúng từng cái một để xem họ đang làm việc ... không ai trong số họ làm việc: (Tôi đã chỉ tự hỏi nếu nó là một lỗi VS2010? Tôi sẽ cố gắng thực hiện một dự án mới và nhìn thấy nếu nó xảy ra sau đó. – Grofit

1

Tôi đã chạy trên cùng một vấn đề. VS sẽ không tải bất kỳ đối tượng biểu mẫu nào.Tôi đã thử tất cả các cách tiếp cận khác không có kết quả.

Trước đây tôi đã thay đổi tất cả các biến toàn cầu riêng thành Thuộc tính công khai.

public Textbox exampleTextBox { get; set; } 

Tôi đã làm điều này vì nhiều lý do, nhưng chế độ xem thiết kế không thích. Tôi tin rằng nó phải có một số vấn đề phân tích cú pháp.

đối tượng phải là biến toàn cầu không phải là thuộc tính.

public Textbox exampleTextBox; 

Chế độ xem được thiết kế cố định này.

3

Đây là những gì phù hợp với tôi. (Đã thử mọi thứ được đăng và không có niềm vui.)

Khi tôi lần đầu tiên bắt đầu các dự án, mặc định namespace được chỉ định trong thuộc tính dự án là MyProject. (Vì vậy hầu hết các lớp học của tôi trông giống như namespaceMyProject{ public class foo{} }

Sau đó tôi thay đổi không gian tên cho các lớp học của tôi MyProject-CompanyName.MyProject Đây cũng là khi vấn đề xảy ra.

Trong trường hợp của tôi, tôi đã phải quay trở lại Project Properties và thay đổi thực sự nhập trong Default namespace-CompanyName.MyProject

Bàng, không vấn đề.

1

Tôi đã tìm thấy một cách khác

Move mẫu mã khởi tạo trong tole tin như dưới đây

private void FormInitialize(){/*Your code here*/} 

Ở dạng constructor sử dụng nó như thế này

public Form1() 
    { 
     InitializeComponent(); 
     FormInitialize(); 
    } 

Và từ Button, MenuItem hoặc tole gọi khác như thế này

private void ChangeCultureToFrench_Click(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr"); 
     this.Controls.Clear(); 
     this.InitializeComponent(); 
     FormInitialize(); 
    } 

Tôi hy vọng điều này sẽ giúp ;-)

0

Tôi gặp vấn đề tương tự như bạn, mặc dù "giải pháp" tôi đã sử dụng có thể thậm chí không được gọi là như vậy. Tôi đã biết tôi thêm một vài dự án thiết lập vào nó, và loại bỏ nó, cùng với việc sử dụng các hành động xây dựng của một vài hình ảnh.

Giải pháp tôi đã sử dụng? Xóa dự án hiện tại và hoàn nguyên về bản sao lưu được thực hiện gần đây nhất mà không có sự cố. Tất nhiên, điều này sẽ chỉ làm việc nếu bạn thực hiện sao lưu các giải pháp dự án của bạn.

Nếu bạn thực hiện sao lưu các giải pháp dự án của mình, chỉ thử phương pháp này là phương sách cuối cùng.

0

Tôi đã thử tất cả các câu trả lời khác bởi không ai trong số họ làm việc.

Điều cuối cùng dường như có tác dụng đối với tôi là thực hiện "Unload Project" bằng cách nhấp chuột phải vào dự án của bạn, sau đó "Tải lại dự án". Trước khi kiểm tra xem .cs [Design] của tôi đã hoạt động chưa, tôi cũng đã đổi tên dự án của mình thành một dự án khác bằng cách nhấp chuột phải vào dự án trong Solution Explorer sau đó nhấp vào "đổi tên".

Đừng hỏi tôi tại sao điều này lại hiệu quả ...

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