Visual Studio 2008'de bir Yeniden Oluşturma ile bir Temiz + Derleme yapma arasındaki fark nedir ? Clean + Build, Clean + Rebuild yaptıktan sonra farklı mıdır ?
Visual Studio 2008'de bir Yeniden Oluşturma ile bir Temiz + Derleme yapma arasındaki fark nedir ? Clean + Build, Clean + Rebuild yaptıktan sonra farklı mıdır ?
Yanıtlar:
Rebuild = Clean + Build (genellikle)
Dikkate değer detaylar:
Çok projeli bir çözüm için, "yeniden oluşturma çözümü" her proje için bir "temiz" ve ardından bir "yapı" (muhtemelen paralel) yapar. Oysa "temiz çözüm" ve ardından "derleme çözümü" önce tüm projeleri (muhtemelen paralel olarak) temizler ve sonra tüm projeleri (muhtemelen paralel olarak) oluşturur. Olayların sıralanmasındaki bu fark, projeler arası bağımlılıklar devreye girdiğinde önemli hale gelebilir.
Her üç eylem de MSBuild hedeflerine karşılık gelir. Böylece proje tamamen farklı bir şey yapmak için Yeniden Oluştur eylemini geçersiz kılabilir.
Earl, zamanın% 99'unun Rebuild = Clean + Build olduğunu doğruladı.
Ancak aynı oldukları garanti edilmez. 3 eylem (yeniden oluşturma, oluşturma, temizleme) farklı MSBuild hedeflerini temsil eder. Her biri özel eylemler yapmak için herhangi bir proje dosyası tarafından geçersiz kılınabilir. Bu nedenle, bir kişinin temiz + derleme başlatmadan (veya tamamen kaldırmadan) önce birkaç eylemi gerçekleştirmesi için yeniden oluşturmayı geçersiz kılması tamamen mümkündür.
Çok köşe bir dava ama yorum tartışmalar nedeniyle işaret.
Varsayılan Yeniden Oluşturma uygulamasını varsayılan Temizleme ve Oluşturma uygulamaları açısından tanımlayalım:
Proje başına: Proje yeniden oluştur = Proje temizle + Proje oluştur.
Çözüm başına: sln = sln = foreach projesini yeniden oluştur (Clean project + Build project)
Yürütme sırasındaki farklılıklar nedeniyle, Rebuild sln öğesinin (Clean sln + Build sln) = (sln Clean projesinde foreach projesi) + (sln Build projesinde foreach projesi) ile aynı olmadığını unutmayın. Ayrıca, bu "foreach" eşzamanlı olarak yürütülebilir, bu nedenle farklı görevlerin iki senaryoda eşzamanlı olarak çalışmasına izin verilir.
Diyelim ki proj1, proj2 ve proj3 içeren bir sln'niz var.
Yeniden oluştur = (Proj1'i temizle + Proj1'i oluştur1) & (Proj2'yi temizle + Proj2'yi oluştur) & (Proj3'ü temizle + Proj3'ü oluştur)
Temiz Sln + Derleme Sln = (Temiz proj1 & Temiz proj2 & Temiz proj3) + (Proj1 derleme & Proj2 derleme ve proj3 derleme)
+ seri anlamına gelir ve eşzamanlı anlamına gelir.
Dolayısıyla, proje bağımlılıkları doğru şekilde yapılandırılmazsa, Rebuild sln komutunu çalıştırdığınızda, bazı projelerinizin eski bir lib'e bağlanma ihtimali vardır. Bunun nedeni, tüm yapıların ilk yapı başlamadan önce bitirilmesinin garanti edilmemesidir. Clean sln + Build sln çalıştırırsanız, size bir bağlantı hatası verir ve size garip davranışları olan bir uygulama vermek yerine bunu hemen bildirir.
Gönderen http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (sadece googled):
Oluştur, yalnızca son derlemeden bu yana değişen kaynak dosyaları derlemek ve bağlamak anlamına gelirken, Yeniden Oluştur, değiştirilip değiştirilmediklerinden bağımsız olarak tüm kaynak dosyaları derlemek ve bağlamak anlamına gelir. Yapı normal bir şeydir ve daha hızlıdır. Bazen proje hedefi bileşenlerinin sürümleri senkronizasyondan çıkabilir ve yapının başarılı olması için yeniden oluşturma gerekir. Uygulamada, asla Temizlemenize gerek yoktur.
Derleme veya Yeniden Oluşturma Çözümü, çözümünüzdeki tüm projeleri oluşturur veya yeniden oluştururken, Derleme veya Yeniden Oluşturma yukarıdaki ekran görüntüsünde "merhaba" olan StartUp projesini oluşturur veya yeniden oluşturur. Başlangıç projesini ayarlamak için, Çözüm Gezgini sekmesinde istediğiniz proje adına sağ tıklayın ve Başlangıç projesi olarak ayarla'yı seçin. Proje adı artık kalın yazılmıştır. Ev ödevi çözümlerinin genellikle yalnızca bir projesi olduğundan, Derleme veya Yeniden Oluşturma Çözümü derleme veya Yeniden Oluşturma ile aynıdır.
Derleme sadece o anda düzenlenmekte olan kaynak dosyayı derler. Kaynak dosyalarınızın geri kalanı eksik olduğunda ve tüm projenin başarılı bir şekilde oluşturulmasını engelleyecek hataları hızlı bir şekilde kontrol etmek için kullanışlıdır. Ctrl-F7, Compile için kısayol tuşudur.
Gönderen bu blog yayınında yazar olarak bağlantılı bu soruya yaptığı yorumda :
Aslında hayır!!! eşit değiller.
Aradaki fark, projelerin temizlenip inşa edilmesidir. Diyelim ki bir çözümde iki projemiz var. Temiz ve sonra derleme her iki projeye de temiz performans gösterecek ve sonra yeniden inşa projesi A sırasında tek tek gerçekleşecek ve bu proje B temizlenecek ve sonra derlenecektir.