Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual Studio, yönetilen projeleri yüklemek ve oluşturmak için MSBuild'i barındırıyor. Projeden MSBuild sorumlu olduğundan, proje farklı bir araç tarafından yazılmış ve özelleştirilmiş bir derleme işlemine sahip olsa bile, MSBuild biçimindeki neredeyse tüm proje Visual Studio'da başarıyla kullanılabilir.
Bu makalede, Visual Studio'da yüklemek ve oluşturmak istediğiniz projeleri ve .targets dosyalarını özelleştirirken dikkate alınması gereken Visual Studio'nun MSBuild barındırmasının belirli yönleri açıklanmaktadır. Bunlar, IntelliSense ve hata ayıklama gibi Visual Studio özelliklerinin özel projenizde çalıştığından emin olmanıza yardımcı olur.
C++ projeleri hakkında bilgi için bkz. Proje dosyaları.
Proje dosya adı uzantıları
MSBuild.exe.*proj deseni ile eşleşen herhangi bir proje dosya adı uzantısını tanır. Ancak Visual Studio, projeyi yükleyecek dile özgü proje sistemini belirleyen bu proje dosya adı uzantılarının yalnızca bir alt kümesini tanır. Visual Studio'da dilden bağımsız MSBuild tabanlı bir proje sistemi yoktur.
Örneğin, C# proje sistemi .csproj dosyalarını yükler, ancak Visual Studio bir .xxproj dosyası yükleyemez. Rastgele bir dildeki kaynak dosyalar için bir proje dosyası, Visual Studio'da yüklenecek Visual Basic veya C# proje dosyalarıyla aynı uzantıyı kullanmalıdır.
Alternatif olarak, *.msbuildproj uzantısı desteklenir.
İyi bilinen hedef adları
Visual Studio'da Oluştur komutuna tıklanması, projede varsayılan hedefi yürütür. Bu hedef genellikle olarak da adlandırılır Build.
Yeniden Oluştur veya Temizle komutu seçildiğinde projede aynı ada sahip bir hedef yürütülmeye çalışılır.
Yayımla'ya tıkladığınızda projede adlı PublishOnly bir hedef yürütülür.
Yapılandırmalar ve platformlar
MSBuild projelerinde yapılandırmalar, Condition özniteliği içeren PropertyGroup öğesindeki gruplandırılmış özellikler tarafından temsil edilir. Visual Studio, görüntülenecek proje yapılandırmalarının ve platformlarının listesini oluşturmak için bu koşullara bakar. Bu listeyi başarıyla ayıklamak için koşulların aşağıdakine benzer bir biçime sahip olması gerekir:
Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "
Condition=" '$(Configuration)' == 'Release' "
Condition=" '$(Something)|$(Configuration)|$(SomethingElse)' == 'xxx|Debug|yyy' "
Visual Studio, bu amaçla , PropertyGroup, , ItemGroupözelliği ve öğe öğelerindeki Importkoşullara bakar.
İlave derleme eylemleri
Visual Studio, dosya özellikleri penceresinin Derleme Eylemi özelliğiyle projedeki bir dosyanın öğe türü adını değiştirmenize olanak tanır.
Derleme, EmbeddedResource, İçerik ve Hiçbiri öğe türü adları her zaman projenizde bulunan diğer öğe türü adlarıyla birlikte bu menüde listelenir. Özel öğe türü adlarının bu menüde her zaman kullanılabilir olmasını sağlamak için, adları AvailableItemName adlı bir öğe türüne ekleyebilirsiniz. Örneğin, proje dosyanıza aşağıdakileri eklemek, dosyayı içeri aktaran tüm projeler için özel JScript türünü bu menüye ekler:
<ItemGroup>
<AvailableItemName Include="JScript"/>
</ItemGroup>
Öğe türü adlarının öğe türüne AvailableItemName eklenmesi, bu türdeki öğelerin Çözüm Gezgini'nde görünmesine neden olur.
Uyarı
Bazı öğe türü adları Visual Studio için özeldir ancak bu açılan listede listelenmez.
İşlem içi derleyiciler
Mümkün olduğunda, Visual Studio daha yüksek performans için Visual Basic derleyicisinin işlem içi sürümünü kullanmayı dener. (C# için geçerli değildir.) Bunun doğru çalışması için aşağıdaki koşulların karşılanması gerekir:
Projenin hedefinde Visual Basic projeleri için adlı
Vbcbir görev olmalıdır.Görevin
UseHostCompilerIfAvailableparametresi true olarak ayarlanmalıdır.
Tasarım zamanı IntelliSense
Derleme bir çıkış derlemesi oluşturmadan önce Visual Studio'da IntelliSense desteği almak için aşağıdaki koşulların karşılanması gerekir:
adlı
Compilebir hedef olmalıdır.CompileHedef veya bağımlılıklarından biri, veyaCscgibiVbcproje için derleyici görevini çağırmalıdır.CompileHedef veya bağımlılıklarından biri derleyicinin IntelliSense için gerekli tüm parametreleri, özellikle de tüm başvuruları almasına neden olmalıdır.İşlem içi derleyiciler bölümünde listelenen koşulların karşılanması gerekir.
Çözüm oluşturma
Visual Studio'da çözüm dosyası ve proje derleme sıralaması Visual Studio tarafından denetlenmektedir. Komut satırında msbuild.exe ile bir çözüm oluştururken, MSBuild çözüm dosyasını ayrıştırıp proje derlemelerini sıralar. Her iki durumda da projeler tek tek bağımlılık sırasına göre oluşturulur ve projeden projeye başvurular arasında geçiş yapılmaz. Buna karşılık, tek tek projeler msbuild.exeile oluşturulduğunda projeden projeye başvurular arasında geçiş yapılır.
Visual Studio'da derleme yaparken özellik $(BuildingInsideVisualStudio)true olarak ayarlanır. Bu, derlemenin farklı davranmasına neden olmak için projenizde veya .targets dosyalarınızda kullanılabilir.
Özellikleri ve öğeleri görüntüleme
Visual Studio belirli özellik adlarını ve değerlerini tanır. Örneğin, bir projedeki aşağıdaki özellik, Windows Uygulaması'nınProje Tasarımcısı'ndakiUygulama Türü kutusunda görünmesine neden olur.
<OutputType>WinExe</OutputType>
Özellik değeri Proje Tasarımcısı'nda düzenlenebilir ve proje dosyasına kaydedilebilir. Böyle bir özelliğe el ile düzenleme yoluyla geçersiz bir değer verilirse, proje yüklendiğinde Visual Studio bir uyarı gösterir ve geçersiz değeri varsayılan değerle değiştirir.
Visual Studio bazı özellikler için varsayılan değerleri anlar. Bu özellikler, varsayılan olmayan değerlere sahip olmadığı sürece proje dosyasında kalıcı olmaz.
Rastgele adlara sahip özellikler Visual Studio'da görüntülenmez. Visual Studio'daki rastgele özellikleri değiştirmek için proje dosyasını XML düzenleyicisinde açmanız ve el ile düzenlemeniz gerekir. Daha fazla bilgi için bu konunun devamında yer alan Visual Studio'da proje dosyalarını düzenleme bölümüne bakın.
Projede rastgele öğe türü adlarıyla tanımlanan öğeler, çözüm gezgininde proje düğümlerinin altında varsayılan olarak görüntülenir. Bir öğeyi görüntüden gizlemek için meta verileri olarak Visibleayarlayınfalse. Örneğin, aşağıdaki öğe derleme işlemine katılır ancak Çözüm Gezgini'nde görüntülenmez.
<ItemGroup>
<IntermediateFile Include="cache.temp">
<Visible>false</Visible>
</IntermediateFile>
</ItemGroup>
Uyarı
C++ projeleri için Visible meta verisi, Çözüm Gezgini tarafından yoksayılır.
Visible false olarak ayarlansa bile, öğeler her zaman gösterilecektir.
Projeye aktarılan dosyalarda bildirilen öğeler varsayılan olarak görüntülenmez. Derleme işlemi sırasında oluşturulan öğeler Çözüm Gezgini'nde hiçbir zaman görüntülenmez.
Öğeler ve özelliklerle ilgili koşullar
Yapı sırasında tüm koşullara tam olarak uyulur.
Görüntülenecek özellik değerleri belirlenirken, Visual Studio'da yapılandırma bağımlı olarak kabul edilen özellikler yapılandırmadan bağımsız olarak değerlendirildiğinden farklı değerlendirilir. Yapılandırmaya bağlı olarak değerlendirilen özellikler için Visual Studio, Configuration ve Platform özelliklerini uygun şekilde ayarlar ve MSBuild'e projeyi yeniden değerlendirmesi talimatını verir. Yapılandırmayı bağımsız olarak değerlendiren özellikler için koşulların nasıl değerlendirileceği belirsizdir.
Öğelerdeki koşullu ifadeler, öğenin Çözüm Gezgini'nde görüntülenip görüntülenmeyeceğine karar vermek amacıyla her zaman yoksayılır.
Hata ayıklama
Çıktı derlemesini bulup başlatmak ve hata ayıklayıcısını eklemek için Visual Studio'da , OutputPathve AssemblyName özellikleri OutputTypedoğru şekilde tanımlanmalıdır. Derleme işlemi derleyicinin bir .pdb dosyası oluşturmasına neden olmadıysa hata ayıklayıcı eklenmez.
Tasarım zamanı hedef yürütme
Visual Studio, bir projeyi yüklerken belirli adlarla hedefleri yürütmeye çalışır. Bu hedefler Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths ve CopyRunEnvironmentFiles hedeflerini içerir. Visual Studio bu hedefleri çalıştırarak derleyicinin IntelliSense sağlamak üzere başlatılabilmesini, hata ayıklayıcının başlatılabilmesini ve Çözüm Gezgini'nde görüntülenen başvuruların çözümlenebilmesini sağlar. Bu hedefler mevcut değilse, proje düzgün yüklenir ve oluşturulur, ancak Visual Studio'daki tasarım zamanı deneyimi tam olarak işlevsel olmaz.
Visual Studio'da proje dosyalarını düzenleme
Bir MSBuild projesini doğrudan düzenlemek için proje dosyasını Visual Studio XML düzenleyicisinde açabilirsiniz.
Visual Studio'da proje dosyasını kaldırmak ve düzenlemek için
Çözüm Gezgini'nde proje düğümüne sağ tıklayın ve ardından Projeyi Kaldır'ı seçin.
Proje işaretlendi (kullanılamıyor).
Çözüm Gezgini'nde, kullanılamayan proje düğümüne sağ tıklayın ve proje dosyasını< düzenle'yi >seçin.
Proje dosyası Visual Studio XML Düzenleyicisi'nde açılır.
Proje dosyasını düzenleyin, kaydedin ve kapatın.
Çözüm Gezgini'nde, kullanılamayan proje düğümüne sağ tıklayın ve ardından Projeyi Yeniden Yükle'yi seçin.
IntelliSense ve doğrulama
Proje dosyalarını düzenlemek için XML düzenleyicisi kullanılırken IntelliSense ve doğrulama, MSBuild şema dosyaları tarafından yönlendirilir. Bunlar, Visual Studio yükleme dizini<\Xml\Schemas\1033\MSBuild içinde> bulunabilen şema önbelleğine yüklenir.
Temel MSBuild türleri Microsoft.Build.Core.xsd içinde tanımlanır ve Visual Studio tarafından kullanılan yaygın türler Microsoft.Build.CommonTypes.xsd içinde tanımlanır. Özel öğe türü adları, özellikleri ve görevleri için IntelliSense ve doğrulamaya sahip olacak şekilde şemaları özelleştirmek için Microsoft.Build.xsd dosyasını düzenleyebilir veya CommonTypes veya Core şemalarını içeren kendi şemanızı oluşturabilirsiniz. Kendi şemanızı oluşturursanız , Xml düzenleyicisini Özellikler penceresini kullanarak bulması için yönlendirmeniz gerekir.
Yüklenen proje dosyalarını düzenleme
Visual Studio, proje dosyalarının ve proje dosyaları tarafından içeri aktarılan dosyaların içeriğini önbelleğe alır. Yüklenen bir proje dosyasını düzenlerseniz, Visual Studio değişikliklerin etkili olması için otomatik olarak projeyi yeniden yüklemenizi ister. Ancak, yüklenen bir proje tarafından içeri aktarılan bir dosyayı düzenlerseniz yeniden yükleme istemi olmaz ve değişikliklerin etkili olması için projeyi el ile kaldırıp yeniden yüklemeniz gerekir.
Çıkış grupları
Microsoft.Common.targets içinde tanımlanan çeşitli hedeflerin adları OutputGroups veya OutputGroupDependencies ile sona erer. Visual Studio, proje çıktılarının belirli listelerini almak için bu hedefleri çağırır. Örneğin, SatelliteDllsProjectOutputGroup hedefi, bir derlemenin oluşturacağı tüm uydu derlemelerinin bir listesini oluşturur. Bu çıkış grupları yayımlama, dağıtım ve projeden projeye başvurular gibi özellikler tarafından kullanılır. Bunları tanımlamayan projeler Visual Studio'da yüklenip derlenir, ancak bazı özellikler düzgün çalışmayabilir.
Referans çözümleme
Başvuru çözümlemesi, gerçek derlemeleri bulmak için proje dosyasında depolanan başvuru öğelerini kullanma işlemidir. Özellikler penceresinde her başvurunun ayrıntılı özelliklerini göstermek için Visual Studio başvuru çözümlemesini tetiklemelidir. Aşağıdaki listede üç başvuru türü ve bunların nasıl çözümlendikleri açıklanmaktadır.
Derleme referansları
Proje sistemi, iyi bilinen adlı
ResolveAssemblyReferencesbir hedefi çağırır. Bu hedef, öğe türü adınaReferencePathsahip öğeler üretmelidir. Bu öğelerin her biri, başvurunun tam yolunu içeren bir öğe belirtimine (öğenin özniteliğinin değeriInclude) sahip olmalıdır. Girdi öğelerindeki tüm mevcut meta verilerin yanı sıra, aşağıdaki yeni meta veriler de öğelerde bulunmalıdır.CopyLocal, derlemenin true veya false olarak ayarlanmış çıkış klasörüne kopyalanıp kopyalanmayacağını belirtir.OriginalItemSpec, başvurunun özgün öğe belirtimini içerir.ResolvedFrom, .NET Framework dizininden çözümlendiyse "{TargetFrameworkDirectory}" olarak ayarlanır.
COM referansları
Proje sistemi, iyi bilinen adlı
ResolveCOMReferencesbir hedefi çağırır. Bu hedef, öğe türü adınaComReferenceWrapperssahip öğeler üretmelidir. Bu öğelerin her birinin, COM referansı için birlikte çalışma derlemesinin (interop assembly) tam yolunu içeren bir öğe belirtimi olmalıdır. Öğelerde, adıylaCopyLocalyeni meta verilerin yanı sıra, derlemenin true veya false olarak ayarlanmış çıkış klasörüne kopyalanıp kopyalanmayacağını belirten giriş öğelerindeki tüm meta veriler geçirilmelidir.Doğal Referanslar
Proje sistemi, iyi bilinen adlı
ResolveNativeReferencesbir hedefi çağırır. Bu hedef, öğe türü adınaNativeReferenceFilesahip öğeler üretmelidir. Öğelerde, referansın özgün öğe belirtimini içerenOriginalItemSpecadlı yeni bir meta veri parçasına ek olarak, giriş öğelerindeki tüm meta veriler aktarılmalıdır.
Performans kısayolları
Hata ayıklamayı başlatmak için (F5 tuşuna basarak veya menü çubuğunda Hata Ayıklama'yı Başlat> seçerek) veya projenizi derlemek için (Örneğin, Derleme>), Visual Studio IDE'yi kullanırsanız, derleme işlemi performansı artırmak için hızlı bir güncelleme denetimi kullanır. Özelleştirilmiş derlemelerin sırayla derlenen dosyalar oluşturduğu bazı durumlarda, hızlı güncelleştirme denetimi değiştirilen dosyaları doğru şekilde tanımlamaz. Daha kapsamlı güncelleştirme denetimleri gerektiren projeler, ortam değişkenini DISABLEFASTUPTODATECHECK=1ayarlayarak hızlı denetimi kapatabilir. Alternatif olarak, projeler bunu projede veya projenin içeri aktarmış olduğu bir dosyada MSBuild özelliği olarak ayarlayabilir.