2010-04-23 12 views
27

Uygulamam x64 uygulaması olarak kuruldu. VS2010'a geçtikten sonra, başvurulan dll'lerdeki bazı x64/x86 uyumsuzluğuyla ilgili gibi görünen some problems var. Şimdi, .NET4'ü hedeflemeye devam ediyorum ve daha çok similar problems aldım.Bir x64 uygulaması x86 montajlarını kullanabilir mi?

Sorum şu ki: x64 ve x86 karışımları ile ilgili hangi önlemleri almam gerekir. Hiç yapılabilir mi? X64 uygulamalarının sorunsuz bir şekilde x86 disklerini kullanabilmesi gerektiğini düşündüm. Yok hayır? Diğer yoldan ne haber? X86 uygulama referansı x64 dll - x64 platformunda çalıştırıldığı sürece kullanılabilir mi? Farkında olmam gereken tuzaklar neler?

cevap

30

Hayır, 64 bitlik bir işlem yalnızca 64 bit DLL'leri yükleyebilir ve 32 bitlik bir işlem yalnızca 32 bit DLL'leri yükleyebilir. Muhtemelen düşündüğünüz, bir 64 bit işletim sistemi 32 bit işlemlerini çalıştırabilir.

.NET ile ilgili temel sorun, - VS2010 öncesinde - çalıştırılabilir işletim sistemlerinin "AnyCPU" olarak ayarlanmış olmasıdır; bu, üzerinde çalıştığı işletim sisteminin "yerel" biçiminde yükleneceği anlamına gelir (32 bit 32 bit) Windows'un ve 64 bit Windows sürümleri için 64 bit sürümleri. Sorun şu ki, eğer 32-bit Windows üzerinde uygulamanızı test ettiyseniz (o zaman), 32-bit DLL'leri yüklerseniz ve 64-bit Windows'da çalıştırılmaya çalışılırsa kırılabilir.

VS2010'da, tüm çalıştırılabilir projelerin varsayılan olarak (çoğunlukla) sorunu azaltan "x86" (yani 32 bit) olması varsayılan olarak kabul edildi.

+0

Bu açıklığa kavuşuyor! Teşekkürler! Evet - 64bit işletim sisteminin 32bit işlemleri yürütebileceğini biliyorum. Ve sadece süreçlerde uygulanan aynı prensibi varsaydım. Bakalım kodumu düzeltip düzeltemediğimi şimdi anlayabiliyorum .. Sanırım her şeyi değiştireceğim x86 .. – stiank81

5

WOW32 emülasyonunu kullanarak 64 bit işletim sisteminde x86 uygulamalarını çalıştırabilirsiniz. Karşılaştığım bazı tuzaklar - aynı süreçte 32/64 karıştırıp eşleştiremezsiniz. Yani, IIS'i 64 olarak çalıştırmayı düşünüyorsanız, tüm montajların 64 olması gerekir, aksi takdirde 32 bit modunda çalıştırmanız gerekir. 64 bit, bazı uygulamalara diğerlerinden daha fazla yardımcı olur. SQL sever'in 64 bit sürümünü çalıştırmak, 32 bit sürümüne göre çeşitli avantajlar sağlar, en büyük avantajı, hedef sunucuda 4 GB'den daha fazla bellek yükleyebilmeniz ve SQL'in 4 GB'den daha fazla bellek kullanabilmesidir. IIS'nin yararı çok fazla değildir, çünkü IIS genellikle 3 gb'den fazla bellek kullanamaz. Tavsiyem, mümkünse SQL sunucunuzun/os/sürümünüzün 64 olmasını sağlamaktır. Bu bir şey yapmayacak. Diğer sunucular 64 ise büyük dfference ama genellikle 32 bit sürümleri ile çalışmak ve bulmak daha kolaydır.

+0

İstediğim gibi değil ama yine de işe yarar. Teşekkürler! – stiank81

İlgili konular