2008-11-24 18 views
11

Trong khi làm việc trên một dự án hiện tôi đột nhiên đã nhận lỗi sau khi cố gắng để biên dịch các giải pháp:gì có thể gây ra Visual Studio/C# lỗi MSB3105: Duplicate nguồn

lỗi MSB3105: Mục "[filename]" là được chỉ định nhiều lần trong tham số "Tài nguyên". Các mục trùng lặp không được hỗ trợ bởi tham số "Tài nguyên".

Bây giờ, theo như tôi biết, tôi không thực hiện bất kỳ thay đổi nào đối với dự án ảnh hưởng đến tài nguyên. Ngoài ra tôi đã kiểm tra từng và mọi tập tin trong dự án, nhưng không có tham chiếu trùng lặp ở bất cứ đâu trong tệp này. Bây giờ tôi đã tìm thấy một số mục diễn đàn liên quan đến lỗi này:

1) Mở tệp .csproj và xóa tham chiếu trùng lặp. [Đã thử điều này, nhưng tôi không thể tìm thấy bất kỳ bản sao nào trong đó]

2) Trong dự án 'một phần', di chuyển mọi thứ sang một lớp. [Có thể thử điều này, nhưng dự án đã được chia thành các lớp từng phần kể từ khi bắt đầu và tôi không muốn thay đổi điều này chỉ vì lỗi]

Vì vậy, điều gì khác có thể gây ra điều này?

+0

Một biến thể gần đây của câu hỏi, với các trường hợp và giải pháp khác nhau: http://stackoverflow.com/questions/7810758/how-to-solve-a-duplicate-items-error-in-the-resources-parameter –

Trả lời

14

Bạn đã thử hiển thị tất cả các tệp trong Solution Explorer chưa? Bạn có thể có một tệp .rsx trùng lặp ở đâu đó trong đó.

+1

Cảm ơn bạn đã đề xuất. Nhưng tôi đã làm, và tôi không tìm thấy một bản sao. Tôi cũng đã cố gắng tìm các biểu mẫu trùng lặp, vì ai đó đã đề xuất tôi có thể đã vô tình sao chép biểu mẫu. –

5

Tôi tìm thấy câu trả lời trong .NET forum posting bởi Roy Green, và Theresa đã ngay sau khi tất cả, mặc dù tôi đã không nhận ra nó.
Nếu bạn có lớp biểu mẫu chính của bạn được chia thành các lớp một phần, các phần một phần sẽ kết thúc trong trình khám phá giải pháp dưới dạng các mục riêng biệt. Và nếu bạn nhấp đúp vào chúng, chúng sẽ hiển thị ở chế độ thiết kế dưới dạng biểu mẫu bình thường. Nhưng nếu bạn (vô tình) thả một điều khiển trên các biểu mẫu này, Visual Studio sẽ tạo một tệp .resx mới và một thường trình InitializeComponent cho nó. Nhưng vì biểu mẫu này thực sự chỉ là một phần của lớp Biểu mẫu Chính nên nó dẫn đến lỗi 'tài nguyên trùng lặp'. Và không có giải pháp nào khác ngoài việc xóa thường trình InitializeComponent và xóa tệp .resx bằng tay.

+0

Chấp nhận câu trả lời của cô ấy rồi :) – Geo

+0

Bạn nói đúng. Tôi chỉ làm .. –

3

Đảm bảo rằng dưới yourForm.cs không có tài nguyên trùng lặp nào được xác định (.resx). Nếu bạn đổi tên Biểu mẫu của mình, hãy xóa tài nguyên cũ vì tài nguyên mới trong khi biên dịch sẽ được tạo bằng tên mới.

2

Tôi vừa phạm sai lầm tương tự. Xóa mainform.designer.vb, sau đó tôi khôi phục lại nó từ thùng rác và tìm thấy thông báo lỗi này khi biên dịch. Tôi cố gắng tìm kiếm trên google và một người nào đó được đề xuất để kiểm tra .vbproj. Đã làm điều đó và tìm thấy một bản sao trên một số dòng.

2

Tôi cũng có điều này, trong VB. Có tệp "real form" frmMain, và sau đó tôi đã tạo các tệp lớp mới và sửa đổi chúng thành Lớp công khai một phần frmMain. Ví dụ, tôi có một ImportFromExcel.vb tập tin Class phần (tôi không muốn lộn xộn lên frmMain.vb với mã nhập khẩu Excel khá phức tạp.)

Tất cả mọi thứ đã làm việc tốt cho đến khi tôi quyết định rằng tôi muốn để sử dụng OpenFileDialog trong Sub ImportFromExcel. Tôi đã kéo OFD từ hộp công cụ về chế độ xem Nhà thiết kế của tệp ImportFromExcel. (Tôi không biết tại sao chế độ xem này tồn tại, nếu bạn không thể làm bất cứ điều gì với nó!) Nhưng ở bất kỳ tốc độ nào ... kéo OFD đến Nhà thiết kế Lớp Một phần đã tạo ra một ImportFromExcel.resx tệp. Thao tác kéo/thả cũng tạo ra một phụ InitializeComponent trong ImportFromExcel, là dự phòng và hiển thị lỗi - dễ dàng sửa với một chút chỉnh sửa.

Cuối cùng, tôi đã chọn không sử dụng tài nguyên đã kéo, nhưng đã bản địa hóa mã trong tệp ImportFromExcel.vb.

Tất cả những gì bạn thực sự phải làm là nhấp chuột phải vào tệp ImportFromExcel.resx và chọn Xóa. Mọi thứ khác dường như "sửa chữa chính nó", và nó xây dựng tốt ngay bây giờ.

+0

Giải pháp tốt cho một vấn đề tương tự. Nhưng có lẽ bạn nên thêm nó như là một câu hỏi/câu trả lời mới để người dùng VB có thể tìm thấy nó? –

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