2010-11-04 11 views
5

Birçok farklı kütüphaneden oluşan geniş bir çözümümüz var. 64 bitlik bir sistem üzerinde geliştirmeye yeni taşındık ve bu, çözümdeki her bir proje için hangi platform hedefini belirleyeceğimizi düşünüyor.C# Çözüm, tüm projeler x86 olması gereken biri dışında AnyCPU'yu hedefleyebilir mi?

Geçerli zamanda, yalnızca 32 bit DLL dosyasına başvuran bir kitaplık projemiz var. Bu DLL dosyasının bir Interop'unu referans alıyoruz, ancak x86'yı bu proje için platform olarak hedeflerken bir yandan da "Any CPU" olarak çözümde kalan projeleri bırakırken bir hata alıyoruz.

Sorum şu ki, 32 bitlik birlikte çalışmayı referans alan dışındaki tüm projelerimizde herhangi bir CPU hedefleyebilir miyiz? Ya da x86 için her şeyi yapmalısınız, çünkü bu herhangi bir hata olmadan çalışır gibi görünüyor.

cevap

3

Evet.

Tüm DLL'ler ancak bir AnyCPU olabilir.

Sadece x86 işlemini yaptığınızdan emin olun ve tüm DLL'ler 32 bit olarak yüklenir.

Aldığınız hata nedir? Hata mesajının eklenmesi, daha yararlı cevaplara yol açabilir.

+0

64 bit makinede geliştiriyoruz. 32 bit DLL referans gerektiren kütüphane hariç tüm projeler için "Herhangi bir CPU" hedeflediğimizde, işe yaramıyor. Bir hata iletisi alıyoruz "CLSID ile bileşen için COM sınıfı fabrika geri alma {sayılar} başarısız oldu. – Horges

+0

Ah, o zaman işe yaramaz. Yalnızca EXE projesini x86 olarak değiştirirseniz çalışmalıdır. – codekaizen

+0

Evet, işe yarar SADECE ana uygulamayı X86'ya ayarladık ve geri kalanı AnyCPU olarak kalabiliyor. (Ve eğer yapabilirsek) 64 bit'i destekleyen yeni bir DLL elde edeceğimiz tek şey, ana uygulama için hedef platformu değiştirmektir. Teşekkürler codekaizen – Horges

1

Tüm dll'leri anyCpu ise, .exe dosyanız x64 veya x86 olabilir. Ancak, eğer exe sizin x64 veya x86 ise, .dlls sizin diğeriniz olamaz. Ayrıca, .exe dosyanız AnyCPU ise, makineye özgü modda yükleneceğine inanıyorum. Bunun anlamı, dll'lerinizin herhangi bir CPU veya sisteminiz için yerel modu olduğu anlamına gelir.