Tworzenie zadań kompilacji i debugowania na potrzeby programowania "Otwórz folder"
Program Visual Studio może automatycznie uruchamiać wiele różnych języków programowania i baz kodu. Opcja Otwórz folder umożliwia natychmiastowe uruchamianie kodu dla rozpoznanej bazy kodu bez specjalnych instrukcji i bez tworzenia projektu. Deweloperzy często używają tego podejścia do szybkiego testowania.
Niektóre bazy kodu wymagają niestandardowych narzędzi kompilacji, których program Visual Studio nie rozpoznaje lub nie może natychmiast przetworzyć za pomocą opcji Otwórz folder . W tych scenariuszach można zdefiniować zadania kompilacji, aby poinstruować program Visual Studio, jak skompilować i debugować kod. Zadania kompilacji określają wszystkie elementy, których język musi skompilować i uruchomić kod, i mogą służyć do wykonania niemal dowolnej wymaganej operacji.
W tym artykule opisano sposób definiowania zadań kompilacji w celu skonfigurowania ustawień kompilacji i debugowania dla nierozpoznanej bazy kodu bez projektu w programie Visual Studio.
Eksplorowanie plików konfiguracji JSON
Aby dostosować bazę kodu bez projektu, program Visual Studio udostępnia dwa pliki JSON (.json) dla ustawień konfiguracji: zadania i uruchamianie. Program Visual Studio tworzy (lub otwiera) te pliki zgodnie z potrzebami po wybraniu określonych opcji w programie Visual Studio Eksplorator rozwiązań.
W poniższej tabeli opisano pliki JSON i sposób ich tworzenia w Eksplorator rozwiązań.
Plik JSON | Cel konfiguracji | Dostęp do plików |
---|---|---|
tasks.vs.json | Zdefiniuj niestandardowe polecenia kompilacji, niestandardowe przełączniki kompilatora i dowolne zadania (niezwiązane z kompilacją). | W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik lub folder, aby otworzyć menu kontekstowe, a następnie wybierz polecenie Konfiguruj zadania. |
launch.vs.json | Określ argumenty wiersza polecenia na potrzeby debugowania. | W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik lub folder, aby otworzyć menu kontekstowe, a następnie wybierz polecenie Dodaj konfigurację debugowania. |
Dodawanie plików JSON do kontroli źródła
Domyślnie zadania i uruchamianie plików JSON nie są widoczne w Eksplorator rozwiązań. Pliki znajdują się w ukrytym folderze o nazwie .vs w folderze głównym (\) bazy kodu. Pliki są ukryte, ponieważ nie są często dodawane do kontroli źródła. Ukryte pliki można wyświetlić w programie Visual Studio, wybierając opcję Pokaż wszystkie pliki w Eksplorator rozwiązań.
Jeśli chcesz dodać pliki JSON do kontroli źródła, przeciągnij pliki do folderu głównego (\) bazy kodu w systemie plików. Pliki stają się widoczne w Eksplorator rozwiązań i dostępne dla kontroli źródła.
Definiowanie zadań za pomocą tasks.vs.json
Skrypty kompilacji i operacje zewnętrzne można zautomatyzować w bieżącym obszarze roboczym, uruchamiając akcje jako zadania bezpośrednio w programie Visual Studio. Aby skonfigurować nowe zadanie, kliknij prawym przyciskiem myszy plik lub folder w Eksplorator rozwiązań i wybierz polecenie Konfiguruj zadania:
Ta akcja tworzy (lub otwiera) plik tasks.vs.json w folderze .vs . Zdefiniuj zadanie kompilacji lub dowolne zadanie w tym pliku, a program Visual Studio dodaje nazwę zadania jako polecenie do menu Eksplorator rozwiązań prawym przyciskiem myszy. Zadanie można wywołać, wybierając odpowiednie polecenie w Eksplorator rozwiązań.
Zadania niestandardowe można dodawać do poszczególnych plików lub do wszystkich plików określonego typu. Na przykład pliki pakietów NuGet można skonfigurować tak, aby miały zadanie "Przywróć pakiety" lub wszystkie pliki źródłowe można skonfigurować tak, aby miały zadanie analizy statycznej, takie jak linter dla wszystkich plików JavaScript (.js).
Tworzenie zadań dla nierozpoznanych narzędzi
Jeśli baza kodu używa niestandardowych narzędzi kompilacji, które są nierozpoznane przez program Visual Studio, nie można uruchomić i debugować kodu w programie Visual Studio do momentu wykonania dodatkowych kroków konfiguracji.
Możesz zdefiniować zadania kompilacji, aby poinstruować program Visual Studio, jak kompilować, kompilować, kompilować i czyścić kod. Plik tasks.vs.json łączy wewnętrzną pętlę programowania programu Visual Studio z niestandardowymi narzędziami kompilacji zdefiniowanymi dla bazy kodu.
Załóżmy, że baza kodu ma jeden plik języka C# o nazwie hello.cs. Plik make dla takiej bazy kodu może wyglądać następująco:
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
W przypadku podobnego pliku make, który zawiera obiekty docelowe kompilacji, czyszczenia i ponownego kompilowania, można użyć opcji Konfiguruj zadania dla pliku make i zdefiniować następujący plik tasks.vs.json . Plik JSON definiuje zadania kompilowania, odbudowywania i czyszczenia bazy kodu przy użyciu narzędzia NMAKE:
{
"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}\""
}
}
]
}
Po zdefiniowaniu zadań kompilacji w pliku tasks.vs.json program Visual Studio dodaje odpowiednie polecenia zadań do menu prawym przyciskiem myszy w Eksplorator rozwiązań. W tym przykładzie opcje Kompilowanie, Ponowne kompilowanie i Czyszczenie są dodawane do menu prawym przyciskiem myszy dla wystąpień pliku makefile w bazie kodu:
Program Visual Studio wyświetla nowe polecenia w menu prawym przyciskiem myszy po poleceniu Konfiguruj zadania zgodnie z ich contextType
ustawieniami. Polecenia "build", "rebuild" i "clean" to polecenia kompilacji i są wyświetlane w sekcji "Kompilacja" w menu prawym przyciskiem myszy.
Po wybraniu niestandardowego polecenia zadania w menu prawym przyciskiem myszy wykonywana jest operacja. Program Visual Studio wyświetla dane wyjściowe polecenia w oknie Dane wyjściowe i wszelkie błędy kompilacji na liście błędów.
Tworzenie zadań dla dowolnych operacji
Zadania niestandardowe można zdefiniować w pliku tasks.vs.json dla dowolnej operacji. Możesz zdefiniować zadanie, aby wyświetlić nazwę aktualnie wybranego pliku w oknie Dane wyjściowe lub wyświetlić listę plików w określonym folderze.
Przykład: Nazwa wyświetlana aktualnie wybranego pliku
W poniższym przykładzie przedstawiono plik tasks.vs.json , który definiuje jedno dowolne zadanie. Podczas wywoływania tego zadania operacja wyświetla nazwę pliku aktualnie wybranego języka JavaScript (.js).
{
"version": "0.2.1",
"tasks": [
{
"taskName": "Echo filename",
"appliesTo": "*.js",
"type": "default",
"command": "${env.COMSPEC}",
"args": [ "echo ${file}" ]
}
]
}
Kod tego zadania definiuje następujące właściwości:
taskName
: nazwa polecenia zadania programu Visual Studio do wyświetlenia w menu prawym przyciskiem myszy. W tym przypadku nazwa pliku Echo.appliesTo
: pliki polecenia zadania do wykonania. W tym przypadku pliki JavaScript (.js).command
: polecenie do wywołania. To zadanie używa zmiennej środowiskowejCOMSPEC
do identyfikowania interpretera wiersza polecenia (zazwyczaj cmd.exe).args
: Wszelkie argumenty, które mają być przekazywane, gdy program Visual Studio wywołuje polecenie .${file}
: Argumenty dla tego zadania obejmują makro, które pobiera plik aktualnie wybrany w Eksplorator rozwiązań.
Po zapisaniu pliku tasks.vs.json możesz kliknąć prawym przyciskiem myszy dowolny plik JavaScript (.js) w folderze i wybrać nazwę pliku Echo. Program Visual Studio wyświetla wybraną nazwę pliku w oknie Dane wyjściowe .
Przykład: Wyświetlanie listy plików i podfolderów
W poniższym przykładzie przedstawiono plik tasks.vs.json , który definiuje zadanie umożliwiające wyświetlenie listy plików i podfolderów folderu bin :
{
"version": "0.2.1",
"outDir": "\"${workspaceRoot}\\bin\"",
"tasks": [
{
"taskName": "List Outputs",
"appliesTo": "*",
"type": "default",
"command": "${env.COMSPEC}",
"args": [ "dir ${outDir}" ]
}
]
}
Kod tego zadania definiuje następujące właściwości:
taskName
: nazwa polecenia zadania dla menu kliknij prawym przyciskiem myszy, Wyświetl dane wyjściowe.appliesTo
: to zadanie działa na wszystkich elementach w określonym folderze, zgodnie z użyciem symbolu wieloznakowego (*).command
: Podobnie jak w poprzednim przykładzie, zadanie używaCOMSPEC
zmiennej środowiskowej do identyfikowania interpretera wiersza polecenia (cmd.exe).args
: Gdy program Visual Studio wywołuje zadanie, przekazuje wywołanie dodir
polecenia, które wyświetla listę elementów katalogu (folderu).${outDir}
{outDir}
: makro jest definiowane przed blokiemtasks
. Identyfikuje folder bin jako katalog do działania.
To zadanie dotyczy wszystkich plików w bazie kodu. Gdy program Visual Studio dodaje nazwę polecenia dla dowolnego zadania w menu prawym przyciskiem myszy, prefiksuje polecenie z poleceniem Uruchom, jak w obszarze Dane wyjściowe listy uruchomień.
Jeśli otworzysz menu prawym przyciskiem myszy dla dowolnego pliku w Eksplorator rozwiązań, polecenie Uruchom listę danych wyjściowych zadania będzie wyświetlane jako ostatnie polecenie w sekcji "Kompilacja" menu. Po wybraniu pozycji Uruchom listę danych wyjściowych program Visual Studio wyświetla zawartość folderu bin dla bazy kodu w oknie Dane wyjściowe :
Używanie wielu plików task.vs.json
Istnieje wiele plików tasks.vs.json w folderze głównym (\) i podfolderach bazy kodu. Takie podejście zapewnia elastyczność definiowania różnych zachowań dla określonych podfolderów lub plików w bazie kodu.
Program Visual Studio agreguje lub zastępuje ustawienia w całej bazie kodu i określa priorytety plików w następującej kolejności:
- Pliki ustawień w folderze .vs w folderze głównym (\).
- Folder, w którym jest obliczane ustawienie.
- Folder nadrzędny bieżącego folderu, do folderu głównego (\).
- Pliki ustawień w folderze głównym (\).
Te reguły agregacji dotyczą tylko wystąpień pliku tasks.vs.json .
Sprawdzanie właściwości tasks.vs.json
W poniższych sekcjach opisano niektóre właściwości, które można określić w pliku tasks.vs.json .
Ustawianie właściwości appliesTo
Zadania dla dowolnego pliku lub folderu można utworzyć, określając nazwę pliku lub folderu z właściwością appliesTo
, taką jak "appliesTo": "hello.js"
.
Poniższa tabela zawiera podsumowanie wartości maski plików, których można użyć z właściwością appliesTo
w celu utworzenia określonego zachowania zadania:
Wartość (maska pliku) | Zadanie ma zastosowanie do |
---|---|
"*" |
Wszystkie pliki i foldery w obszarze roboczym |
"*/" |
Wszystkie foldery w obszarze roboczym |
"*.js" |
Wszystkie pliki z rozszerzeniem JavaScript (.js) w obszarze roboczym |
"/*.js" |
Wszystkie pliki z rozszerzeniem JavaScript (.js) w folderze głównym (\) obszaru roboczego |
"src/*/" |
Wszystkie podfoldery folderu src |
"makefile" |
Wszystkie pliki o nazwie makefile w obszarze roboczym |
"/makefile" |
Tylko plik o nazwie makefile w folderze głównym (\) obszaru roboczego |
Używanie makr w argumentach zadań
Makra można przekazać jako argumenty zadania w celu rozszerzenia zachowania zadania, gdy program Visual Studio wywołuje polecenie.
W poniższej tabeli wymieniono kilka przykładów makr:
Makro | opis | Przykłady |
---|---|---|
${env.<VARIABLE>} |
Określa dowolną zmienną środowiskową do użycia w wierszu polecenia dewelopera. Aby uzyskać więcej informacji, zobacz Wiersz polecenia dla deweloperów i Program PowerShell dla deweloperów. | ${env.PATH} , ${env.COMSPEC} |
${workspaceRoot} |
Zawiera pełną ścieżkę do folderu obszaru roboczego. | C:\sources\hello , C:\sources\hello\bin |
${file} |
Zawiera pełną ścieżkę do pliku lub folderu. | C:\sources\hello\src\hello.js* , C:\sources\hello\src\test.js* |
${relativeFile} |
Zawiera ścieżkę względną do pliku lub folderu. | src\hello.js* , bin\hello.exe |
${fileBasename} |
Zawiera nazwę pliku, z wyłączeniem ścieżki lub rozszerzenia. | hello , test |
${fileDirname} |
Zawiera pełną ścieżkę do pliku, z wyłączeniem nazwy pliku. | C:\sources\hello\src* , C:\sources\hello\bin\test\* |
${fileExtname} |
Udostępnia rozszerzenie wybranego pliku. | .js , , .cs .exe |
Konfigurowanie debugowania przy użyciu launch.vs.json
Program Visual Studio udostępnia plik launch.vs.json , którego można użyć do skonfigurowania debugowania dla bazy kodu.
Uwaga
Aby skonfigurować projekty CMake do debugowania, zobacz Konfigurowanie sesji debugowania narzędzia CMake.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik wykonywalny (.exe) i wybierz polecenie Dodaj konfigurację debugowania:
W oknie dialogowym Wybieranie debugera wybierz opcję konfiguracji debugowania z listy, a następnie wybierz pozycję Wybierz:
Jeśli plik launch.vs.json jeszcze nie istnieje, program Visual Studio utworzy plik. Oto przykład pliku utworzonego dla pliku wykonywalnego hello.exe :
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "bin\\hello.exe", "projectTarget": "", "name": "hello.exe" } ] }
Po utworzeniu pliku uruchamiania kliknij prawym przyciskiem myszy plik wykonywalny dla bazy kodu w Eksplorator rozwiązań, a następnie wybierz pozycję Ustaw jako element startowy.
Plik wykonywalny jest wyznaczony jako element startowy bazy kodu, a program Visual Studio ustawia etykietę dla przycisku Uruchom debugowania, aby odzwierciedlić nazwę pliku wykonywalnego:
Po uruchomieniu debugera za pomocą F5 program Visual Studio rozpoczyna debugowanie kodu i zatrzymuje się w dowolnym ustawionym punkcie przerwania. Wszystkie znane okna debugera są dostępne i funkcjonalne.
Aby uzyskać więcej informacji na temat niestandardowych zadań kompilacji i debugowania w projektach otwartych folderów języka C++, zobacz Obsługa otwierania folderów dla systemów kompilacji języka C++ w programie Visual Studio.
Określanie argumentów na potrzeby debugowania
Argumenty wiersza polecenia można określić, aby przekazać je do debugera w pliku launch.vs.json . Dodaj argumenty w tablicy args
, jak pokazano w poniższym przykładzie:
{
"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" ]
}
]
}
Uruchamianie konfiguracji debugowania
Możesz utworzyć dowolną liczbę konfiguracji debugowania. Po zapisaniu pliku uruchamiania nazwy konfiguracji są dodawane do listy rozwijanej miejsca docelowego debugowania. Możesz wybrać konkretny element docelowy, aby uruchomić debuger:
Jeśli nie widzisz dodatkowych obiektów docelowych w menu, wybierz pozycję Pokaż/Ukryj elementy docelowe debugowania i skonfiguruj widoczne elementy docelowe.
Omówienie pierwszeństwa konfiguracji
Program Visual Studio skanuje dwie lokalizacje elementów określonych we właściwości tablicy w configurations
plikach launch.vs.json :
- Folder główny (\) dla bazy kodu
- Folder .vs
Jeśli masz pliki launch.vs.json w obu lokalizacjach i występuje konflikt w definicji konfiguracji, wartość w pliku .vs\launch.vs.json ma pierwszeństwo.
Użyj innych plików ustawień
Oprócz zadania i uruchamiania plików JSON program Visual Studio odczytuje ustawienia z innych plików konfiguracji zdefiniowanych w bazie kodu. Dwa najczęściej używane pliki to settings.json i gitignore.
Definiowanie ustawień kodu za pomocą polecenia .vscode\settings.json
Program Visual Studio odczytuje ograniczone ustawienia z pliku o nazwie settings.json, gdy plik znajduje się w folderze o nazwie .vscode.
Ta funkcja jest udostępniana dla baz kodu utworzonych wcześniej w programie Visual Studio Code. Obecnie jedynym ustawieniem odczytanego z pliku .vscode\settings.json jest files.exclude
. To ustawienie służy do wizualnego filtrowania plików w Eksplorator rozwiązań i z niektórych narzędzi wyszukiwania.
W bazie kodu może znajdować się wiele plików vscode\settings.json . Ustawienia odczytane z tego pliku są stosowane do folderu nadrzędnego .vscode i wszystkich jego podfolderów.
Konfigurowanie plików Git za pomocą narzędzia .gitignore
Możesz użyć pliku .gitignore, aby poinformować usługę Git, które pliki mają być ignorowane podczas stosowania kontroli źródła. Pliki .gitignore są często dołączane jako część bazy kodu, dzięki czemu ustawienia mogą być udostępniane wszystkim deweloperom bazy kodu. Program Visual Studio odczytuje wzorce w plikach gitignore w celu wizualnego filtrowania elementów i z niektórych narzędzi wyszukiwania.
Ustawienia odczytane z pliku .gitignore są stosowane do jego folderu nadrzędnego i wszystkich podfolderów.