2012-04-04 36 views
7

Tôi có một dự án với hơn 5000 chuỗi tài nguyên trong đó. Hầu như tất cả chúng đều có dấu chấm trong định danh của chúng.Ngăn chặn "Tên tài nguyên không phải là số nhận dạng hợp lệ"

Chúng tôi đang chuyển đổi sang tự động tạo ra các lớp học mạnh mẽ, đánh máy, và tất nhiên, bởi vì trong những thời kỳ, chúng ta thấy một vài ngàn cảnh báo

Tên tài nguyên 'blah' không phải là một định danh hợp lệ.

Tôi biết nó không phải là, máy phát điện thay đổi thời gian để gạch dưới, và mọi thứ đều ổn.

Tôi có thể chặn cảnh báo không? Dường như nó không có số liên quan đến #pragma.

+0

Câu trả lời là "không". Và vì chúng tôi không thể thay đổi các phím (bản địa hóa của chúng tôi bị treo cứng), tôi bị kẹt khá nhiều. – Stu

Trả lời

6

Tôi nghĩ rằng tôi có thể repro, mặc dù nó không phải là tinh thể trong câu hỏi. Dự án + Thuộc tính, Tài nguyên và nhập tên tài nguyên chuỗi như "foo.bar" sẽ kích hoạt cảnh báo này.

Có, bạn không thể chặn cảnh báo này, nó được tạo bởi nhà thiết kế tài nguyên trong IDE. Khi nó tự động tạo mã từ tệp Properties \ Resources.resx đến tệp Properties \ Resources.Designer.cs. Hãy xem tệp .resx và kiểm tra thuộc tính "name" trên các phần tử <data>. Một khoảng thời gian trong giá trị thuộc tính sẽ kích hoạt cảnh báo.

Tìm kiếm và thay thế cẩn thận bằng regexp có thể khắc phục điều đó bằng cách chuyển các dấu chấm thành dấu gạch dưới. Điều đó mang lại cho tôi hai vấn đề cá nhân, tôi chỉ viết một chương trình nhỏ sử dụng XDocument. Ngoài ra, hãy kiểm tra xem bạn vẫn cần mã được tạo tự động này, có vẻ như bạn đang thay thế mã đó.

+0

Không, chúng tôi đang chuyển từ phản chiếu thủ công sang các lớp được tạo tự động. Chỉ cần đổi tên sẽ không hoạt động vì chúng ta có toàn bộ chuỗi công cụ i18n để khóa các định danh này. Sigh ... – Stu

+0

Điều đó không giúp tôi. Cảnh báo được tạo ra bởi nhà thiết kế tài nguyên vẫn là lời giải thích yêu thích của tôi. –

+0

Nên rõ ràng hơn, tôi đoán vậy. Trừ khi ai đó đến với một workaround tôi sẽ cung cấp cho bạn những tiền thưởng anyways. – Stu

3

Điều này sẽ ngăn chặn tất cả các cảnh báo cho đệ cs đưa ra với

#pragma warning disable 

Bạn cũng sẽ có thể kích chuột phải vào cảnh báo và sau đó nhấn vào Hiện Lỗi trợ giúp. Nó sẽ cung cấp cho các số cảnh báo chính xác để bạn có thể ngăn chặn chỉ là cảnh báo đó cho toàn bộ dự án bằng cách đi vào các thuộc tính dự án, sau đó xây dựng trang và nhập nó vào hộp văn bản Suppress Warnings.

Sau khi nghiên cứu sâu hơn, dường như một số cảnh báo không thể bị chặn. Xem chi tiết về msdn về/nowarn C# Tùy chọn trình biên dịch http://msdn.microsoft.com/en-us/library/7f28x9z3.aspx

Một trong số đó là Cảnh báo biên dịch (cấp 1) CS2029 đề cập đến cảnh báo "không phải là số nhận dạng hợp lệ" mà bạn đang nhận được. Bạn có thể xác nhận thêm rằng nó không thể bị chặn bằng cách truy cập các chi tiết trên Cảnh báo biên dịch (level1) CS2029 tại đây http://msdn.microsoft.com/en-us/library/878y1894.aspx

+0

Tệp .cs được tạo tự động. Không có số cảnh báo. – Stu

+0

Không phải năm 2029. Không có số./W0 không có hiệu lực. – Stu

2

Một công việc xung quanh thực sự khủng khiếp ở đây sẽ được bỏ vài mã được tạo từ công cụ Resource:

Hãy nói rằng tên file nguồn của bạn là Resources.resx

  1. Mở công cụ tài nguyên bằng cách nhấp đúp vào Resources.resx trong dự án bên trong Visual Studio.

  2. Đặt công cụ sửa đổi Access của bạn phù hợp với phạm vi mã được tạo mà bạn đang sử dụng.

  3. Trong Windows Explorer, đi đến nhà ở thư mục của bạn Resources.resxResources.Designer.cs mã. (Hoặc bằng tay duyệt web hoặc nhấp chuột phải vào dự án thư mục của bạn/namespace và chọn "Open Folder trong Windows Explorer")

  4. Đổi tên Resources.Designer.cs để Resources.cs

  5. Quay trở lại công cụ tài nguyên trong Visual Studio và thiết lập các modifier Tiếp cận "Không thế hệ mã"

  6. Lưu, đóng công cụ tài nguyên

  7. Nhấp vào "Sh ow Tất cả các tệp "biểu tượng ở đầu cửa sổ trình khám phá giải pháp. Các Resources.cs tập tin sẽ xuất hiện trong cùng một thư mục như Resources.resx ở dạng ghosted

  8. Nhấp chuột phải vào Resources.cs và chọn "Bao gồm trong dự án"

Các cảnh báo bây giờ sẽ biến mất. Tất nhiên, sự bất tiện của công việc này là bạn sẽ phải thực hiện tất cả các bước này bất cứ khi nào bạn sửa đổi tệp tài nguyên.

0

Cảnh báo này xảy ra nếu tên tài nguyên không phải là số nhận dạng hợp lệ (ví dụ, nó chứa dấu cách hoặc '-') và tạo nguồn tài nguyên mạnh được bật cho tệp. Đây là cảnh báo thay vì lỗi vì tên tài nguyên được nhập mạnh sẽ được đổi thành tên hợp lệ (ví dụ: "a b" sẽ được đổi thành "a_b"), nhưng tên tài nguyên sẽ vẫn là "a b".

Để khắc phục lỗi này

Trước tiên, bạn nên thay đổi tên của tài nguyên để một định danh hợp lệ, nếu có thể. Nếu đó không phải là một tùy chọn hợp lệ, hãy vô hiệu hóa việc tạo mã nguồn tài nguyên mạnh mẽ cho tệp .resx này. Để thực hiện việc này, hãy chọn tệp .resx trong Solution Explorer và xóa thuộc tính Công cụ tùy chỉnh.

NGUỒN: http://msdn.microsoft.com/en-us/library/ms228672(v=vs.80).aspx

+0

và điều gì sẽ xảy ra nếu tôi cần mã (.Designer.cs) và không thể đổi tên tài nguyên ở tất cả .. ?? có cách nào khác không ..? – shashwat

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