2010-07-01 26 views
9

Tôi nhận được lỗi sau:"Một assembly với tên đơn giản tương tự đã được nhập khẩu" lỗi mà không tham khảo trùng lặp

error CS1704: An assembly with the same simple name 'Interop.xxx.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null has already been imported. Try removing one of the references or sign them to enable side-by-side.

Tất cả những gì tôi đã nhìn thấy nói rằng tôi đang tham khảo hai cụm với cùng tên và tôi cần phải loại bỏ một trong số họ. Tuy nhiên, tôi đã kiểm tra và tôi chỉ tham chiếu nó một lần.

Điều này cũng chỉ xảy ra khi tôi đang sử dụng msbuild để xây dựng từ dòng lệnh trên hộp dev của tôi. Nếu tôi xây dựng thông qua Visual Studio hoặc làm một xây dựng sạch trên máy chủ CI của chúng tôi, tôi không thấy lỗi này.

Tôi đã cố gắng loại bỏ hoàn toàn tất cả nguồn và tòa nhà của mình từ đầu đến gần giống với máy xây dựng nhưng không may mắn.

+1

Đăng dòng lệnh csc.exe cho dự án đó. –

+0

https://stackoverflow.com/questions/28730100/visual-studio-2015-debugging-cant-expand-local-variables/28838720#28838720 – iTachi

Trả lời

7

Vì vậy, có vẻ như tôi không thể đọc hôm nay!
Dự án có tham chiếu đến Interop và tham chiếu COM tạo ra tương tác "tương tự". Vì vậy, có hai và tôi đã không tìm kiếm rất tốt. Tôi vẫn không hiểu tại sao nó lại hoạt động ở những nơi khác nhưng điều này đã khắc phục được nó.

+1

+1 - Cảm ơn - lỗi này vừa xuất hiện trên tôi ngay hôm nay và tôi đã có cùng một vấn đề. –

2

Nếu đây là dự án web, có bất kỳ tham chiếu nào được đặt tên mạnh cho phiên bản khác không? Những thứ đó sẽ không hiển thị dưới dạng phụ thuộc của dự án, nhưng sẽ gây ra lỗi thời gian chạy như bạn mô tả. Hy vọng rằng sẽ giúp

1

Tôi gặp sự cố này nhưng trong trường hợp của mình, tôi đã có một bản sao cũ được đặt trong thư mục hiện tại để EXE tải thành phần của tôi, được tải cùng với thành phần hiện tại, được tải bằng tay từ thư mục dự án của tôi. Xóa bản sao cũ đã giải quyết được sự cố của tôi.
Tôi đã sử dụng Gỡ lỗi> Windows> Mô-đun cửa sổ để xem mô-đun nào đã được tải vào thời điểm đó và đã giải quyết được sự cố của tôi.

0

Đối với những người khác phải đối mặt với tôi: nếu xây dựng qua dòng lệnh sử dụng thuộc tính AssemblyName, nó sẽ ghi đè tất cả các cụm được tạo bởi tất cả các dự án giải pháp - nói cách khác, bạn sẽ kết thúc với (N -1) hội đồng có tên giống nhau trong đó N là không. của các dự án - một dự án khởi động (thường sẽ tạo ra một exe).

Điều này xảy ra vì tất cả các thuộc tính dòng lệnh xây dựng là toàn cầu và ghi đè bất kỳ cài đặt cụ thể của dự án nào. Xem thisthis.

Từ MSDN link đề cập ở trên:

Global properties are properties that are set by using the /property switch on the command line, or properties that are set by the integrated development environment (IDE) before a project is built. These global properties are applied to all projects that are built by using this Engine.

Trong trường hợp cụ thể của tôi, nơi Jenkins là công cụ CI, tôi đã kết thúc thêm một lệnh cửa sổ hàng loạt ở cuối để đổi tên .exe chỉ với những gì tôi ban đầu dự định khi truyền tham số AssemblyName.

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