Aracılığıyla paylaş


"Klasör Aç" geliştirmesi için derleme ve hata ayıklama görevlerini özelleştirme

Visual Studio birçok farklı dili ve kod tabanını çalıştırmayı bilir, ancak her şeyi çalıştırmayı bilmez. Visual Studio'da bir kod klasörü açtıysanız ve Visual Studio kodunuzun nasıl çalıştırılacağını biliyorsa, ek yapılandırma yapmadan hemen çalıştırabilirsiniz.

Kod tabanı Visual Studio'nun tanımadığı özel derleme araçlarını kullanıyorsa, Visual Studio'da kodu çalıştırmak ve hatalarını ayıklamak için bazı yapılandırma ayrıntıları sağlamanız gerekir. Derleme görevlerini tanımlayarak Visual Studio'ya kodunuzu nasıl oluşturabileceğinizi belirtirsiniz. Bir dilin kodu oluşturmak ve çalıştırmak için ihtiyaç duyduğu tüm öğeleri belirtmek için bir veya daha fazla derleme görevi oluşturabilirsiniz. Ayrıca, istediğiniz neredeyse her şeyi yapabilen rastgele görevler de oluşturabilirsiniz. Örneğin, bir klasörün içeriğini listelemek veya dosyayı yeniden adlandırmak için bir görev oluşturabilirsiniz.

Aşağıdaki .json dosyalarını kullanarak projesiz kod tabanınızı özelleştirin:

Dosya adı Purpose
tasks.vs.json Özel derleme komutlarını ve derleyici anahtarlarını ve rastgele (derlemeyle ilgili olmayan) görevleri belirtin.
Çözüm Gezgini sağ tıklayarak erişilen menü öğesi Görevleri Yapılandır'ı seçin.
launch.vs.json Hata ayıklama için komut satırı bağımsız değişkenlerini belirtin.
Çözüm Gezgini sağ tıklama menü öğesi hata ayıklama ve başlatma Ayarlar aracılığıyla erişilir.

Bu .json dosyaları, kod tabanınızın kök klasöründe .vs adlı gizli bir klasörde bulunur. görevler.vs.json ve launch.vs.json dosyaları, Çözüm Gezgini'daki bir dosya veya klasörde Görevleri Yapılandır veya Hata Ayıkla ve Başlat Ayarlar seçtiğinizde Visual Studio tarafından gerektiğinde oluşturulur. Bu .json dosyaları gizlenir çünkü kullanıcılar genellikle bunları kaynak denetiminde denetlemek istemez. Ancak, bunları kaynak denetimine denetleyebilmek istiyorsanız, dosya sisteminizi kullanarak dosyaları kod tabanınızın köküne sürükleyin; burada bunlar Çözüm Gezgini ve kaynak denetiminde görünür.

İpucu

Visual Studio'da gizli dosyaları görüntülemek için Çözüm Gezgini araç çubuğunda Tüm Dosyaları Göster düğmesini seçin.

tasks.vs.json ile görevleri tanımlama

Derleme betiklerini veya geçerli çalışma alanınızdaki dosyalardaki diğer dış işlemleri doğrudan IDE'de görev olarak çalıştırarak otomatikleştirebilirsiniz. Dosya veya klasöre sağ tıklayıp Görevleri Yapılandır'ı seçerek yeni bir görev yapılandırabilirsiniz.

Configure Tasks menu

Bu, .vs klasöründe tasks.vs.json dosyasını oluşturur (veya açar). Bu dosyada bir derleme görevi veya rastgele görev tanımlayabilir ve ardından Çözüm Gezgini sağ tıklama menüsünden ona vermiş olduğunuz adı kullanarak çağırabilirsiniz.

Özel görevler tek tek dosyalara veya belirli bir türe ait tüm dosyalara eklenebilir. Örneğin, NuGet paket dosyaları bir "Paketleri Geri Yükle" görevine sahip olacak şekilde yapılandırılabilir veya tüm kaynak dosyalar tüm .js dosyaları için lint gibi statik bir çözümleme görevine sahip olacak şekilde yapılandırılabilir.

Özel derleme görevleri tanımlama

Kod tabanınız Visual Studio'nun tanımadığı özel derleme araçlarını kullanıyorsa, bazı yapılandırma adımlarını tamamlayana kadar Visual Studio'da kodu çalıştıramaz ve hata ayıklayamazsınız. Visual Studio, Visual Studio'ya kodunuzu derleme, yeniden derleme ve temizleme hakkında bilgi verebileceğiniz derleme görevleri sağlar. tasks.vs.json derleme görev dosyası, Visual Studio iç geliştirme döngüsünü kod tabanınız tarafından kullanılan özel derleme araçlarıyla birleştirir.

Hello.cs adlı tek bir C# dosyasından oluşan bir kod tabanı düşünün. Böyle bir kod tabanının makefile'i şöyle görünebilir:

build: directory hello.exe

hello.exe: hello.cs
	csc -debug hello.cs /out:bin\hello.exe

clean:
	del bin\hello.exe bin\hello.pdb

rebuild: clean build

directory: bin

bin:
	md bin

Derleme, temizleme ve yeniden derleme hedefleri içeren bu tür bir derleme dosyası için aşağıdaki tasks.vs.json dosyasını tanımlayabilirsiniz. Derleme aracı olarak NMAKE kullanarak kod tabanını oluşturmak, yeniden derlemek ve temizlemek için üç derleme görevi içerir.

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "makefile-build",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "build",
      "command": "nmake",
      "args": [ "build" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-clean",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "clean",
      "command": "nmake",
      "args": [ "clean" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-rebuild",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "rebuild",
      "command": "nmake",
      "args": [ "rebuild" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    }
  ]
}

derleme görevlerini tasks.vs.json dosyasında tanımladıktan sonra, Çözüm Gezgini'da ilgili dosyalara ek sağ tıklama menüsü (bağlam menüsü) öğeleri eklenir. Bu örnekte, tüm derleme dosyası dosyalarının bağlam menüsüne "build", "rebuild" ve "clean" seçenekleri eklenir.

makefile context menu with build, rebuild, and clean

Not

Komutlar, ayarları nedeniyle contextType Görevleri Yapılandır komutunun altındaki bağlam menüsünde görünür. "build", "rebuild" ve "clean" derleme komutlarıdır, bu nedenle bağlam menüsünün ortasındaki derleme bölümünde görünürler.

Bu seçeneklerden birini belirlediğinizde görev yürütülür. Çıktı, Çıkış penceresinde, derleme hataları ise Hata Listesi'nde görüntülenir.

Rastgele görevleri tanımlama

hemen hemen istediğiniz her şeyi yapmak için tasks.vs.json dosyasında rastgele görevler tanımlayabilirsiniz. Örneğin, Çıktı penceresinde seçili durumdaki dosyanın adını görüntülemek veya belirtilen dizindeki dosyaları listelemek için bir görev tanımlayabilirsiniz.

Aşağıdaki örnekte, tek bir görevi tanımlayan bir tasks.vs.json dosyası gösterilmektedir. Çağrıldığında, görev seçili durumdaki .js dosyasının dosya adını görüntüler.

{
  "version": "0.2.1",
  "tasks": [
    {
      "taskName": "Echo filename",
      "appliesTo": "*.js",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "echo ${file}" ]
    }
  ]
}
  • taskName sağ tıklama menüsünde görünen adı belirtir.
  • appliesTo komutun hangi dosyalarda gerçekleştirilebileceğini belirtir.
  • command özelliği çağrılacak komutu belirtir. Bu örnekte, COMSPEC ortam değişkeni genellikle cmd.exe olan komut satırı yorumlayıcısını tanımlamak için kullanılır.
  • özelliği, args çağrılan komuta geçirilecek bağımsız değişkenleri belirtir.
  • Makro seçili ${file} dosyayı Çözüm Gezgini alır.

tasks.vs.json dosyasını kaydettikten sonra, klasördeki herhangi bir .js dosyasına sağ tıklayıp Echo dosya adı'nı seçebilirsiniz. Dosya adı Çıkış penceresinde görüntülenir.

Not

Kod tabanınızda tasks.vs.json dosyası yoksa, Çözüm Gezgini'da bir dosyanın sağ tıklama veya bağlam menüsünden Görevleri Yapılandır'ı seçerek bir dosya oluşturabilirsiniz.

Sonraki örnek, bin dizininin dosyalarını ve alt klasörlerini listeleyen bir görev tanımlar.

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "List Outputs",
      "appliesTo": "*",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "dir ${outDir}" ]
    }
  ]
}
  • ${outDir} , ilk olarak blok öncesinde tasks tanımlanan özel bir makrodur. Daha sonra özelliğinde çağrılır args .

Bu görev tüm dosyalar için geçerlidir. Çözüm Gezgini'daki herhangi bir dosyada bağlam menüsünü açtığınızda, menünün en altında görevin adı Liste Çıkışları görüntülenir. Çıkışları Listele'yi seçtiğinizde, bölme dizininin içeriği Visual Studio'daki Çıkış penceresinde listelenir.

Arbitrary task in context menu

Ayarlar kapsamı

Bir kod tabanının kök ve alt dizinlerinde birden çok tasks.vs.json dosyası bulunabilir. Bu tasarım, kod tabanının farklı alt dizinlerinde farklı davranışlar elde etme esnekliği sağlar. Visual Studio, kod tabanındaki ayarları toplar veya geçersiz kılar ve dosyaların önceliklerini aşağıdaki sırayla ayarlar:

  • Kök klasörün .vs dizinindeki dosyaları Ayarlar.
  • Bir ayarın hesaplandığı dizin.
  • Geçerli dizinin üst dizini, kök dizine kadar.
  • Kök dizindeki dosyaları Ayarlar.

Bu toplama kuralları tasks.vs.json için geçerlidir. Diğer dosyadaki ayarların nasıl toplandığını öğrenmek için bu makalenin ilgili bölümüne bakın.

tasks.vs.json özellikleri

Bu bölümde tasks.vs.json dosyasında belirtebileceğiniz bazı özellikler açıklanmaktadır.

Appliesto

Herhangi bir dosya veya klasör için, örneğin alanında "appliesTo": "hello.js"adını appliesTo belirterek görevler oluşturabilirsiniz. Aşağıdaki dosya maskeleri değer olarak kullanılabilir:

Dosya maskesi Açıklama
"*" görev, çalışma alanı içindeki tüm dosya ve klasörler için kullanılabilir
"*/" görev çalışma alanındaki tüm klasörler için kullanılabilir
"*.js" görev, çalışma alanında .js uzantısına sahip tüm dosyalar için kullanılabilir
"/*.js" görev, çalışma alanının kökünde .js uzantısına sahip tüm dosyalar için kullanılabilir
"src/*/" src klasörünün tüm alt klasörleri için görev kullanılabilir
"makefile" görev, çalışma alanı içindeki tüm derleme dosyası dosyaları için kullanılabilir
"/makefile" görev yalnızca çalışma alanının kökündeki makefile için kullanılabilir

tasks.vs.json makroları

Makro Açıklama
${env.<VARIABLE>} Herhangi bir ortam değişkenlerini (örneğin, ${env) belirtir. PATH}, ${env. geliştirici komut istemi için ayarlanan COMSPEC} vb. Daha fazla bilgi için bkz . Geliştirici Komut İstemi ve Geliştirici PowerShell.
${workspaceRoot} Çalışma alanı klasörünün tam yolu (örneğin, C:\sources\hello)
${file} Bu görevi çalıştırmak için seçilen dosya veya klasörün tam yolu (örneğin, C:\sources\hello\src\hello.js)
${relativeFile} Dosya veya klasörün göreli yolu (örneğin, src\hello.js)
${fileBasename} Yolu veya uzantısı olmayan dosyanın adı (örneğin, merhaba)
${fileDirname} Dosya adı hariç dosyanın tam yolu (örneğin, C:\sources\hello\src)
${fileExtname} Seçili dosyanın uzantısı (örneğin, .js)

launch.vs.json ile hata ayıklamayı yapılandırma

CMake projelerini hata ayıklama için yapılandırmak için bkz . CMake hata ayıklama oturumlarını yapılandırma.

  1. Kod tabanınızı hata ayıklama için yapılandırmak için, Çözüm Gezgini yürütülebilir dosyanızın sağ tıklama veya bağlam menüsünden Hata Ayıkla ve Başlat Ayarlar menü öğesini seçin.

    Debug and Launch Settings context menu

  2. Hata Ayıklayıcı Seç iletişim kutusunda bir seçenek belirleyin ve ardından Seç düğmesini seçin.

    Select a Debugger dialog box

    launch.vs.json dosyası henüz yoksa oluşturulur.

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "bin\\hello.exe",
          "name": "hello.exe"
        }
      ]
    }
    
  3. Ardından, Çözüm Gezgini yürütülebilir dosyaya sağ tıklayın ve Başlangıç Öğesi Olarak Ayarla'yı seçin.

    Yürütülebilir dosya, kod tabanınız için başlangıç öğesi olarak belirlenir ve hata ayıklama Başlangıç düğmesinin başlığı yürütülebilir dosyanızın adını yansıtacak şekilde değişir.

    Customized Start button

    F5'i seçtiğinizde, hata ayıklayıcısı önceden ayarlamış olabileceğiniz herhangi bir kesme noktasında başlatılır ve durur. Tüm tanıdık hata ayıklayıcı pencereleri kullanılabilir ve işlevseldir.

    Önemli

    C++ klasör açma projelerindeki özel derleme ve hata ayıklama görevleri hakkında ek ayrıntılar için bkz . Visual Studio'da C++ derleme sistemleri için Klasör Açma desteği.

Hata ayıklama için bağımsız değişkenleri belirtme

launch.vs.json dosyasında hata ayıklama için geçirebileceğiniz komut satırı bağımsız değişkenlerini belirtebilirsiniz. Aşağıdaki örnekte gösterildiği gibi dizideki bağımsız değişkenleri args ekleyin:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe"
    },
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe a1",
      "args": [ "a1" ]
    }
  ]
}

Bu dosyayı kaydettiğinizde, hata ayıklama hedefi açılan listesinde yeni yapılandırmanın adı görünür ve hata ayıklayıcıyı başlatmak için bu dosyayı seçebilirsiniz. İstediğiniz kadar hata ayıklama yapılandırması oluşturabilirsiniz.

Debug configurations drop-down list

Not

configurations launch.vs.json dosyasındaki dizi özelliği, kod tabanının kök dizini ve .vs dizini olmak üzere iki dosya konumundan okunur. Çakışma varsa, öncelik .vs\launch.vs.json içindeki değere verilir.

Ek ayarlar dosyaları

Visual Studio, bu konuda açıklanan üç .json dosyasına ek olarak, kod tabanınızda varsa bazı ek dosyaların ayarlarını da okur.

.vscode\settings.json

Visual Studio, .vscode adlı bir dizindeyse settings.json adlı bir dosyadan sınırlı ayarları okur. Bu işlevsellik, daha önce Visual Studio Code'da geliştirilmiş olan kod temelleri için sağlanır. Şu anda .vscode\settings.json dosyasından okunan tek ayar, Çözüm Gezgini ve bazı arama araçlarından dosyaları görsel olarak filtreleyen ayarıdırfiles.exclude.

Kod tabanınızda istediğiniz sayıda .vscode\settings.json dosyası olabilir. Bu dosyadan okunan Ayarlar .vscode üst dizinine ve tüm alt dizinlerine uygulanır.

.gitignore

.gitignore dosyaları, Git'e hangi dosyaların yoksayıldığını, yani iade etmek istemediğiniz dosyaları ve dizinleri bildirmek için kullanılır. .gitignore dosyaları genellikle bir kod tabanının parçası olarak eklenir, böylece ayarlar kod tabanının tüm geliştiricileriyle paylaşılabilir. Visual Studio, öğeleri görsel olarak ve bazı arama araçlarından filtrelemek için .gitignore dosyalarındaki desenleri okur.

.gitignore dosyasından okunan Ayarlar üst dizinine ve tüm alt dizinlerine uygulanır.