SORU
6 Temmuz 2013, CUMARTESİ


Bir çalıştırmak mümkün .XP üzerinde net 4.5 app?

İlk olarak, aşağıdaki okudum:

Bu yüzden, son mermi, bence bunun başka yolu yok bu, ama vardı, eğer bulabilirim kesin bir cevap olarak takımım için yükseltme 4.0 4.5. Ancak, XP desteği var....eğer XP destek olmak istiyorsak gidiyor 4.5 ihtimali yok? Aklıma gelen tek şey iki ayrı çözümler yaratıyor, ama sonra olarak kullanılabilecek kod temeli ise 4.5 özellikleri kullansak sapmak gerekir. Yani, bulamadım bazı şaşırtıcı çözüm arıyorum ve belki başkalarını da zaten :D bilmiyorum???....

CEVAP
6 Temmuz 2013, CUMARTESİ


Bu cevap sonrası için çekiniyorum, aslında teknik olarak mümkün ama pratikte iyi çalışmıyor. CLR ve çekirdek çerçeve derleme sürüm numaraları 4.5 değiştirilmedi. Hala v4 hedef.0.CLR ve çerçeve derleme sürüm numaraları 30319 hala 4.0.0.0. Tek şey, o kendine özgü hakkında derleme bildirimi bak böyle bir çözücü gibi ildasm.exe bu durum bir [TargetFramework] nitelik bildiren 4.5 gereklidir, bu olmak zorunda değişmiş. Kolay, derleyici tarafından yayılan olduğunu aslında değil.

En büyük fark görünür, Microsoft derlemeler yürütülebilir başlığındaki gecikmiş bir değişiklik yapılmış değildir. Yürütülebilir ile uyumlu ne olduğunu belirtir. Windows XP, Windows 2000 ile başladı önceki nesil aittir. Ana sürüm numarası 5. Vista nesil, büyük geçerli sürüm numarası 6 başlangıcı oldu.

.NET derleyicileri her zaman en düşük sürüm 4.00, Windows NT sürümü ve Windows 9x için sayı belirttiniz. Montaj dumpbin.exe /başlıkları çalıştırarak görebilirsiniz. Örnek çıktı şu şekilde görünür:

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            ...
            4.00 operating system version
            0.00 image version
            4.00 subsystem version              // <=== here!!
               0 Win32 version
            ...

İçinde neler var .NET 4.5 Derleyiciler 6.00 o alt sürüm değiştirin. Windows çünkü büyük bir kısmı aşırı nedeniyle bir değişiklik eğer yeterince küçük ise sadece kontrol ötesinde bu rakam dikkatleri üzerine çekiyor. Ayrıca program Windows'un eski sürümleri üzerinde çalışmak için yazılmış olduğunu varsayar beri appcompat özellikleri açar. Bu özellikler sorun, özellikle Windows Aero pencere boyutu hakkında yalan yol zahmetli. Program Aero olan bir Windows sürümü çalıştırmak için tasarlanmış olduğunu görebilirsiniz zaman Aero pencere şişman sınırları hakkında yalan durur.

Bu sürüm numarasını değiştirmek ve 4.00 geri /alt seçeneği ile birleştirmeleri editbin.exe çalıştırarak ayarlayabilirsiniz. This answer örnek postbuild bir olay gösterir.

Ancak iyi haber sonu, önemli bir problem .NET 4.5 ile çok uyumlu değil .NET 4.0. Sınıflar başka bir derlemesinden taşınan en büyük asmak şimdiye kadar. En önemlisi, bu [Uzantı] özniteliği için oldu. System.core.dll içinde daha önce mscorlib.dll taşındı var .NET 4.5. Eğer kendi uzantısı yöntemleri bildirirseniz, program öznitelik [TypeForwardedTo] özniteliği tarafından etkin Mscorlib bakmak diyor XP kaboom .Sistemin NET 4.5 sürümü.Çekirdek derleme başvurusu. Ama programınızı çalıştırdığınızda, orada değil .NET 4.0

Ve tabii ki sadece mevcut sınıfları ve yöntemleri kullanarak durdurmak yardımcı olan bir şey yok .NET 4.0. Ne zaman, programı 4.0 çalıştırdığınızda Durumuna veya MissingMethodException ile başarısız olur

Sadece hedef 4.0 ve tüm bu sorunlar ortadan kalkar. Ya bu logjam kırmak ve XP, programcılar genellikle ama kesinlikle neden bu sorunlarını işaret ederek teşvik edebilir yapamaz bu bir iş kararı destekleyen durdurmak. Elbette eski işletim sistemleri destek olması için sıfır olmayan bir maliyeti var, test çaba önemli. Sık sık yönetimi, uyumluluk Windows tarafından tanınmayan bir maliyet onları işaret olmadıkça, dillere destan. İleri istemci için maliyet ve doğru kararı vermek çok daha hızlı yaparlar :) Ama bu konuda sana yardım edemeyiz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008
  • SVB International

    SVB Internat

    29 EKİM 2011