2010-11-04 16 views
5

Chúng tôi có một giải pháp lớn bao gồm nhiều thư viện khác nhau. Chúng ta vừa chuyển sang phát triển trên hệ thống 64bit và điều này đã cho chúng ta suy nghĩ về mục tiêu nền tảng nào mà chúng ta nên xác định cho từng dự án riêng lẻ trong giải pháp.C# Solution, tất cả các dự án có thể nhắm mục tiêu AnyCPU ngoại trừ một dự án phải là x86 không?

Hiện tại, chúng tôi chỉ có một dự án thư viện tham chiếu tệp DLL 32 bit. Chúng tôi tham khảo một Interop của tập tin DLL này tuy nhiên chúng tôi nhận được một lỗi khi nhắm mục tiêu x86 làm nền tảng cho dự án này trong khi để lại các dự án còn lại trong giải pháp là "CPU bất kỳ".

Câu hỏi của tôi là, chúng tôi có thể nhắm mục tiêu đến CPU bất kỳ trên tất cả các dự án của chúng tôi ngoại trừ một dự án tham chiếu đến tương tác 32 bit không? Hoặc chỉ nên xây dựng mọi thứ cho x86 vì điều này dường như hoạt động mà không có bất kỳ lỗi nào.

Trả lời

3

Có.

Tất cả các tệp DLL nhưng có thể là AnyCPU.

Chỉ cần đảm bảo thực hiện quy trình x86 và tất cả các tệp DLL sẽ tải dưới dạng 32 bit.

Lỗi bạn đang gặp phải là gì? Việc thêm thông báo lỗi có thể dẫn đến các câu trả lời hữu ích hơn.

+0

chúng tôi đang phát triển trên máy 64 bit. khi chúng tôi nhắm mục tiêu "Bất kỳ CPU" nào cho tất cả các dự án ngoại trừ thư viện yêu cầu tham chiếu đến DLL 32 bit, nó không hoạt động. Chúng tôi nhận được thông báo lỗi "Truy xuất nhà máy của lớp COM cho thành phần với CLSID {number} không thành công. – Horges

+0

Ah, vâng, sau đó nó sẽ không hoạt động. Nó sẽ hoạt động nếu bạn chỉ thay đổi dự án EXE thành x86. – codekaizen

+0

Chúng ta chỉ đặt ứng dụng chính cho X86 và phần còn lại có thể giữ nguyên như AnyCPU Khi (và nếu có thể) chúng ta có được một DLL mới hỗ trợ 64 bit tất cả những gì chúng ta cần làm là thay đổi nền tảng đích cho ứng dụng chính. Cảm ơn codekaizen – Horges

1

Tôi nghĩ rằng nếu tất cả các dll của bạn là anyCpu, .exe của bạn có thể là x64 hoặc x86. Nhưng, nếu exe của bạn là x64 hoặc x86 của bạn .dll không thể là khác. Ngoài ra, nếu .exe của bạn là AnyCPU, tôi tin rằng nó sẽ tải trong bất kỳ chế độ nào có nguồn gốc từ máy. Điều đó có nghĩa rằng dll của bạn đã hoặc là anyCpu hoặc chế độ bản địa cho hệ thống của bạn.

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