2013-02-12 21 views
9

Son olarak, .NET 4.5'in özelliklerini kullanan yeni projeleri destekleyebilmemiz için .NET 4.0'ı sürekli entegrasyon oluşturma sunucumuza yükledik. Bu yapı sunucusu, bazılarının da .NET 4.0'ı hedefleyen eski projeleri oluşturmak ve dağıtmak için de kullanılır..NET 4.5 yüklü bir yapı sunucusu, yalnızca .NET 4.0 yüklü bir sunucuya 4.0 hedefleyen bir projeyi başarıyla dağıtabilir mi?

Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'. 

Environment.CurrentManagedThreadId bir yenidir: .NET 4.0 hedef

Projeler bu sunucuda inşa ediliyor, daha sonra yalnızca .NET 4.0 şimdi aşağıdaki hatayla başarısız oluyor olan bir hedef sunucuya konuşlandırılmış .NET Framework 4.5 özelliği, bu nedenle 4.0 çalıştıran bir sunucuyu bulamıyor. Ancak, , oluşturma zamanında .NET 4.0'ı hedefleyen'dur, bu nedenle teoride, üretim sunucusunda 4.5'in yüklü olması için 'un'a gereksinim duymaması gerekir.

Özetle:

  • Projesi 4.0
  • Yapı sunucusu 4.5
  • proje daha sonra dağıtıldığı olduğu sunucu yüklediği hedef olan tek .NET 4.0
  • Proje ile çalışma zamanında başarısız hata Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.

Ne verir? .NET 4.5 dlls bir sunucu tarafından .NET 4.5 yüklü olduğunda yalnızca .NET 4.0 yüklü bir sunucuda başarılı bir şekilde çalıştırmak mümkün mü?

cevap

12

Bu, 4.5'in 4.0 yerine yerinde yükseltilmesi olduğundan oluşur. Oluşturma sunucusu, varsayılan olarak, .NET 4.

'u hedeflemeseniz bile 4.5 derlemelerini derlerse, bunu düzeltebilirsiniz, ancak 4.0 referans derlemelerini derleme sunucunuza eklemeniz gerekir (böylece derleyici onları bulur) ve sadece .NET 4.5 sürümlerine güvenmez.

Ayrıntılar için bkz. Marc Gravell's blog post on the subject.

+0

Teşekkürler, bu blog yazısı yaşadığımız tam sorunu açıklamak için görünür. Ancak, build server * * 'ın 4.0 referans derlemesine zaten sahip olduğunu söyleyebildiğimiz kadarıyla, hala neyin yanlış gittiğinden emin değiliz. –

+0

@DavidMills Genel olarak, 4.0'ı hedef alacaksanız, bir derleme sunucusuna 4.5 yüklememenizi kesinlikle öneririm. Bu yerinde yükseltme işleminde çok fazla kırılma değişikliği var. Bu söyleniyor, ref montajları doğru yerde ise çalışması gerekir. –

+0

Teşekkürler Reed. İleriye gittik ve 4.0'ı hedefleyen projeleri desteklemek için bir Jenkins kuruluş kölesi oluşturduk. Bu talihsiz ama görünüşte gerekli. Umarım Microsoft, başka bir .NET sürümünü yerinde yükseltme olarak bırakmadan önce iki kez düşünür. –

İlgili konular