Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat mengembangkan proyek Python, Anda mungkin menemukan diri Anda beralih ke jendela perintah untuk menjalankan skrip atau modul tertentu, menjalankan perintah pip, atau menggunakan alat lain dengan kode Anda. Untuk meningkatkan alur kerja, Anda dapat menambahkan perintah kustom ke menu proyek Python di Visual Studio. Perintah Python kustom dapat berjalan di jendela konsol atau di jendela Output Visual Studio. Anda juga dapat menggunakan ekspresi reguler untuk menginstruksikan Visual Studio cara mengurai kesalahan dan peringatan dari output perintah.
Prasyarat
- Visual Studio di Windows diinstal dengan dukungan untuk beban kerja Python. Untuk informasi selengkapnya, lihat Menginstal dukungan Python di Visual Studio.
Visual Studio untuk Mac tidak didukung. Untuk informasi selengkapnya, lihat Apa yang terjadi pada Visual Studio untuk Mac? Visual Studio Code di Windows, Mac, dan Linux berfungsi dengan baik dengan Python melalui ekstensi yang tersedia.
Menjelajahi perintah khusus
Secara default, menu proyek Python berisi dua perintah, Jalankan PyLint dan Jalankan Mypy:
Setiap perintah Python kustom yang Anda tentukan muncul di menu yang sama ini. Perintah kustom dapat merujuk ke file Python, modul Python, kode Python sebaris, executable arbitrer, atau perintah pip. Anda juga dapat menentukan bagaimana dan di mana perintah berjalan.
Anda dapat menambahkan perintah kustom dengan beberapa cara:
Tentukan perintah kustom dalam file proyek Python (.pyproj) secara langsung. Perintah ini berlaku untuk proyek tertentu tersebut.
Tentukan perintah kustom dalam file target (.targets). Anda dapat dengan mudah mengimpor perintah dalam file ini untuk menggunakannya dengan beberapa proyek.
Buat proyek Python dari templat proyek di Visual Studio yang menentukan perintah Python kustom.
Templat proyek Python tertentu di Visual Studio menambahkan perintah kustom dengan menggunakan file target. Templat Proyek Web Botol dan Proyek Web Flask menambahkan dua perintah, Mulai server dan Mulai server debug. Templat Django Web Project menambahkan perintah ini dan beberapa lagi:
Muat ulang proyek untuk mengakses perintah kustom
Saat proyek terbuka di Visual Studio, jika Anda membuat perubahan pada file proyek yang sesuai di editor, Anda harus memuat ulang proyek untuk menerapkan perubahan. Dengan cara yang sama, setelah Anda menentukan perintah Python kustom dalam file proyek Python, Anda perlu memuat ulang proyek Python agar perintah muncul pada menu proyek Python . Saat Anda mengubah perintah kustom yang ditentukan dalam file target, Anda perlu membangun kembali solusi Visual Studio lengkap untuk proyek apa pun yang mengimpor file target.
Pendekatan umumnya adalah membuat perubahan pada file proyek Python langsung di Visual Studio:
Buka proyek Python Anda di Visual Studio. (Saat Anda membuka proyek di Visual Studio, proyek dimuat secara default.)
Di Penjelajah Solusi, klik kanan proyek Python dan pilih Bongkar Proyek.
Visual Studio membongkar proyek dan membuka file proyek Python yang sesuai (.pyproj) di editor.
Jika file proyek tidak terbuka, klik kanan proyek Python lagi dan pilih Edit File Proyek:
Buat perubahan Anda pada file proyek di editor Visual Studio dan simpan pekerjaan Anda.
Di Penjelajah Solusi, klik kanan proyek yang dibongkar dan pilih Muat Ulang Proyek. Jika Anda mencoba memuat ulang proyek tanpa menyimpan perubahan ke file proyek, Visual Studio akan meminta Anda untuk menyelesaikan tindakan.
Proses unload-edit-save-reload dapat menjadi melelahkan saat Anda mengembangkan perintah kustom. Alur kerja yang lebih efisien melibatkan pemuatan proyek secara bersamaan di Visual Studio dan membuka file proyek Python di editor terpisah. Anda dapat menggunakan editor apa pun, seperti instans Lain dari Visual Studio, Visual Studio Code, Notepad, dan sebagainya. Setelah Anda menyimpan perubahan di editor dan beralih kembali ke Visual Studio, Visual Studio mendeteksi perubahan file proyek untuk proyek terbuka dan meminta Anda untuk mengambil tindakan:
Pilih Muat Ulang atau Muat Ulang Semua dan Visual Studio segera menerapkan perubahan file proyek Anda ke proyek terbuka.
Menambahkan perintah kustom dengan file proyek
Prosedur berikut menunjukkan cara membuat perintah kustom dengan menambahkan definisi dalam file proyek Python (.pyproj) dan memuat ulang proyek Anda di Visual Studio. Perintah kustom menjalankan file startup proyek secara langsung dengan menggunakan python.exe perintah , yang pada dasarnya sama dengan menggunakan opsi Debug>Start tanpa Debugging pada toolbar Visual Studio utama.
Di Visual Studio, buat proyek Python baru bernama Python-CustomCommands dengan menggunakan templat Aplikasi Python . Untuk petunjuknya, lihat Mulai Cepat: Membuat proyek Python dari templat.
Visual Studio membuat proyek Python dan memuatnya ke sesi Anda. Anda dapat mengonfigurasi proyek melalui file proyek (.pyproj). File ini hanya terlihat di Visual Studio saat proyek terbuka, tetapi tidak dimuat. Proyek ini juga memiliki file Python (.py) untuk kode aplikasi.
Buka file aplikasi Python_CustomCommands.py di editor dan tambahkan kode berikut:
print("Hello custom commands")Di Penjelajah Solusi, klik kanan proyek Python, pilih Python, dan perhatikan perintah pada menu konteks. Saat ini, satu-satunya perintah pada menu konteks adalah Jalankan PyLint dan Jalankan Mypy. Saat Anda menentukan perintah kustom, perintah tersebut juga muncul di menu ini.
Luncurkan editor terpisah di luar sesi Visual Studio Anda, dan buka file proyek Python (Python-CustomCommands.pyproj) di editor. (Pastikan untuk membuka file proyek (.pyproj) dan bukan file aplikasi Python (.py).)
Dalam file proyek, temukan elemen penutup
</Project>di akhir file, dan tambahkan XML berikut segera sebelum elemen penutup:<PropertyGroup> <PythonCommands> $(PythonCommands); </PythonCommands> </PropertyGroup>Simpan perubahan file proyek Anda, dan beralih kembali ke Visual Studio. Visual Studio mendeteksi perubahan file proyek Anda dan meminta Anda untuk mengambil tindakan. Pada perintah, pilih Muat Ulang untuk memperbarui proyek terbuka Anda dengan perubahan file proyek.
Di Penjelajah Solusi, klik kanan proyek Python, pilih Python, dan periksa perintah pada menu konteks.
Menu konteks masih hanya menampilkan perintah Jalankan PyLint dan Jalankan Mypy . Kode yang baru saja Anda tambahkan ke file proyek hanya mereplikasi grup properti default
<PythonCommands>yang berisi perintah PyLint . Pada langkah berikutnya, Anda menambahkan lebih banyak kode untuk perintah kustom.Beralih ke editor tempat Anda memperbarui file proyek. Tambahkan definisi elemen berikut
<Target>dalam<Project>elemen . Anda dapat memposisikan<Target>definisi sebelum atau sesudah definisi yang<PropertyGroup>dijelaskan sebelumnya.Elemen ini
<Target>menentukan perintah kustom untuk menjalankan file startup untuk proyek (diidentifikasi oleh properti StartupFile ) dengan menggunakanpython.exeperintah di jendela konsol. DefinisiExecuteIn="consolepause"atribut menggunakan konsol yang menunggu Anda memilih kunci untuk menutup jendela konsol.<Target Name="Example_RunStartupFile" Label="Run startup file" Returns="@(Commands)"> <CreatePythonCommandItem TargetType="script" Target="$(StartupFile)" Arguments="" WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="consolepause"> <Output TaskParameter="Command" ItemName="Commands" /> </CreatePythonCommandItem> </Target><PythonCommands>Ganti grup properti (ditambahkan di langkah 5) dengan XML berikut. Sintaks ini menentukanNameatribut untuk<Target>elemen , yang menambahkan perintah kustom ke menu konteks Python . Perintah memiliki label menu Jalankan file startup.<PythonCommands> $(PythonCommands); Example_RunStartupFile </PythonCommands>Petunjuk / Saran
Jika Anda ingin perintah kustom Anda muncul pada menu konteks sebelum perintah default yang ditentukan dalam token, posisikan sintaks untuk perintah Anda sebelum token tersebut
$(PythonCommands)<Target>.Simpan perubahan file proyek Anda, dan beralih kembali ke Visual Studio. Ketika diminta, muat ulang proyek Anda.
Di Penjelajah Solusi, klik kanan proyek Python, pilih Python, dan centang ulang perintah pada menu konteks.
Sekarang perintah Jalankan file startup kustom ada di menu. Jika Anda tidak melihat perintah kustom, konfirmasikan bahwa Anda menambahkan
Namenilai atribut untuk<Target>elemen ke<PythonCommands>elemen seperti yang dijelaskan di langkah 9. Tinjau juga pertimbangan yang tercantum di bagian Pemecahan Masalah nanti di artikel ini.Pilih perintah Jalankan file startup . Jendela konsol terbuka dan menampilkan teks Perintah kustom Halo diikuti dengan Tekan tombol apa pun untuk melanjutkan. Konfirmasi output dan tutup jendela konsol.
Nota
Skrip perintah kustom berjalan di lingkungan yang diaktifkan untuk proyek Python Anda.
Beralih ke editor yang berisi file proyek.
<Target>Dalam definisi elemen (ditambahkan di langkah 8), ubah nilaiExecuteInatribut menjadioutput.<CreatePythonCommandItem ... ExecuteIn="output"> ... </CreatePythonCommandItem>Simpan perubahan Anda, beralih kembali ke Visual Studio, dan muat ulang proyek Anda.
Pilih perintah Jalankan kustom file startup lagi dari menu konteks Python . Sekarang output program muncul di jendela Output Visual Studio daripada jendela konsol:
Untuk menambahkan lebih banyak perintah kustom, ikuti proses yang sama ini:
Tentukan elemen yang sesuai
<Target>untuk perintah kustom dalam file proyek.Tambahkan nilai atribut
Nameuntuk elemen<Target>ke dalam grup properti<PythonCommands>.Simpan perubahan Anda ke file proyek.
Muat ulang proyek Anda di Visual Studio.
Menggunakan properti proyek
Untuk merujuk ke properti proyek atau variabel lingkungan dalam <Target> nilai atribut elemen, gunakan nama properti dalam $() token, seperti $(StartupFile) dan $(MSBuildProjectDirectory). Untuk informasi lebih lanjut, lihat properti MSBuild di .
Jika Anda memanggil perintah seperti ($StartupFile) yang menggunakan properti proyek seperti properti StartupFile , dan perintah gagal karena token tidak terdefinisi, Visual Studio menonaktifkan perintah hingga Anda memuat ulang proyek. Jika Anda membuat perubahan pada proyek yang mengubah definisi properti, perubahan Anda tidak merefresh status perintah terkait. Dalam hal ini, Anda masih perlu memuat ulang proyek.
Memahami <struktur elemen Target>
Anda menentukan detail untuk perintah kustom dengan menggunakan <Target> elemen . Bentuk umum elemen <Target> ditunjukkan dalam kode pseudo berikut:
<Target Name="Name1" Label="Display Name" Returns="@(Commands)">
<CreatePythonCommandItem Target="filename, module name, or code"
TargetType="executable/script/module/code/pip"
Arguments="..."
ExecuteIn="console/consolepause/output/repl[:Display name]/none"
WorkingDirectory="..."
ErrorRegex="..."
WarningRegex="..."
RequiredPackages="...;..."
Environment="...">
<!-- Output always appears in this form, with these exact attributes -->
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Atribut sasaran
Tabel berikut mencantumkan <Target> atribut elemen.
| Attribute | Diperlukan | Description |
|---|---|---|
Name |
Yes | Pengidentifikasi untuk perintah dalam proyek Visual Studio. Nama ini harus ditambahkan ke <PythonCommands> grup properti agar perintah muncul pada menu konteks Python . |
Label |
Yes | Nama tampilan UI yang muncul di menu konteks Python . |
Returns |
Yes | Informasi yang dikembalikan harus berisi token @(Commands) yang mengidentifikasi target sebagai perintah. |
Atribut CreatePythonCommandItem
Elemen <Target> berisi <CreatePythonCommandItem> elemen dan <Output> , yang menentukan perilaku terperinci untuk perintah kustom. Tabel berikut mencantumkan atribut elemen yang tersedia <CreatePythonCommandItem> . Semua nilai atribut tidak peka huruf besar/kecil.
Attribute |
Diperlukan | Description |
|---|---|---|
TargetType |
Yes | Menentukan apa yang dikandung Target atribut dan bagaimana nilai digunakan bersama dengan Arguments atribut : - executable: Jalankan executable bernama dalam Target atribut , menambahkan nilai dalam Arguments atribut , seolah-olah dimasukkan langsung pada baris perintah. Nilai hanya boleh berisi nama program tanpa argumen. - script: Jalankan python.exe perintah dengan nama file di Target atribut , diikuti dengan nilai dalam Arguments atribut . - module: Jalankan python -m perintah diikuti dengan nama modul dalam Target atribut , diikuti oleh nilai dalam Arguments atribut . - code: Jalankan kode sebaris yang terkandung dalam Target atribut .
Arguments Abaikan nilai atribut. - pip: Jalankan pip dengan perintah di Target atribut , diikuti oleh nilai dalam Arguments atribut .
ExecuteIn Jika atribut diatur ke output, pip mengasumsikan bahwa permintaan tersebut adalah untuk menjalankan perintah install dan menggunakan atribut Target sebagai nama paket. |
Target |
Yes | Menentukan nama file, nama modul, kode, atau perintah pip yang akan digunakan, tergantung pada nilai TargetType atribut. |
Arguments |
Fakultatif | Menyediakan string argumen (jika ada) untuk digunakan dengan Target atribut . - Ketika nilai atribut TargetType adalah script, nilai Arguments disediakan ke program Python daripada perintah python.exe. - Ketika TargetType nilai atribut adalah code, Arguments nilai diabaikan. |
ExecuteIn |
Yes | Menentukan lingkungan untuk menjalankan perintah: - console: (Default) Menjalankan Target atribut dengan Arguments nilai seolah-olah mereka dimasukkan langsung pada baris perintah.
Target Saat atribut sedang berjalan, jendela perintah muncul dan ditutup secara otomatis. - consolepause: Perilaku yang sama seperti console, tetapi menunggu penekanan tombol sebelum menutup jendela. - output: Menjalankan Target atribut dan menampilkan hasil di jendela Output Visual Studio.
TargetType Jika atributnya adalah pip, Visual Studio menggunakan Target atribut sebagai nama paket dan menambahkan Arguments nilai atribut. - repl: Menjalankan Target atribut di Jendela Interaktif Python. Nama tampilan opsional digunakan untuk judul jendela. - none: Perilaku yang sama dengan console. |
WorkingDirectory |
Fakultatif | Mengidentifikasi folder untuk menjalankan perintah. |
ErrorRegex WarningRegEx |
Fakultatif | Digunakan hanya saat ExecuteIn atribut diatur ke output. Kedua nilai atribut menentukan ekspresi reguler yang digunakan Visual Studio untuk mengurai output perintah dan menampilkan kesalahan dan peringatan di jendela Daftar Kesalahan . Jika atribut ini tidak ditentukan, perintah tidak memengaruhi jendela Daftar Kesalahan . Untuk informasi selengkapnya tentang apa yang Visual Studio harapkan, lihat Grup pengambilan bernama. |
RequiredPackages |
Fakultatif | Menyediakan daftar persyaratan paket untuk perintah dengan menggunakan format yang sama dengan file requirements.txt (pip.readthedocs.io). Misalnya, perintah Jalankan PyLint menentukan format pylint>=1.0.0. Sebelum Anda menjalankan perintah, Visual Studio mengonfirmasi semua paket dalam daftar diinstal. Visual Studio menggunakan pip untuk menginstal paket yang hilang. |
Environment |
Fakultatif | Mengidentifikasi string variabel lingkungan yang akan ditentukan sebelum menjalankan perintah. Setiap variabel menggunakan formulir \<NAME>=\<VALUE> dengan beberapa variabel yang dipisahkan oleh titik koma. Variabel dengan beberapa nilai harus dimuat dalam tanda kutip tunggal atau ganda, seperti dalam 'NAME=VALUE1;VALUE2'. |
Grup pengambilan bernama untuk ekspresi reguler
Saat Visual Studio menguraikan kesalahan dan peringatan dari output perintah kustom, ia mengharapkan ekspresi reguler dalam nilai atribut ErrorRegex dan WarningRegex untuk menggunakan grup bernama berikut:
-
(?<message>...): Teks kesalahan. -
(?<code>...): Nilai kode kesalahan. -
(?<filename>...): Nama file tempat kesalahan dilaporkan. -
(?<line>...): Nomor baris lokasi dalam file tempat kesalahan dilaporkan. -
(?<column>...): Nomor kolom lokasi dalam file tempat kesalahan dilaporkan.
Misalnya, PyLint menghasilkan peringatan dari formulir berikut:
************* Module hello
C: 1, 0: Missing module docstring (missing-docstring)
Untuk mengizinkan Visual Studio mengekstrak informasi yang tepat dari peringatan ini dan menampilkannya di jendela Daftar Kesalahan , WarningRegex nilai atribut untuk perintah Jalankan Pylint adalah sebagai berikut:
^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]
Nota
msg_id Sintaks dalam nilai atribut WarningRegex sebenarnya harus code, sebagaimana dijelaskan dalam Isu 3680.
Mengimpor perintah kustom dengan berkas target
Jika Anda menentukan perintah kustom dalam file proyek Python, perintah hanya tersedia untuk proyek tertentu. Saat Anda ingin membuat perintah kustom dan menggunakannya dalam beberapa proyek, Anda dapat menentukan <PythonCommands> grup properti dengan semua elemen Anda <Target> dalam file target (.targets) lalu mengimpor file tersebut ke proyek Python Anda.
File target menggunakan format dan sintaks yang sama untuk menentukan perintah kustom seperti yang dijelaskan untuk file proyek Python (.pyproj). Elemen umum untuk dikonfigurasi meliputi
<PythonCommands>, ,<Target><CreatePythonCommandItem>, dan<Output>:<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <PythonCommands> $(PythonCommands); <!-- Additional command names --> </PythonCommands> </PropertyGroup> <Target Name="..." Label="..." Returns="@(Commands)"> <!-- CreatePythonCommandItem and Output elements... --> </Target> <!-- Any number of additional Target elements--> </Project>Untuk mengimpor file target ke dalam proyek Anda, tambahkan
<Import Project="(path)">elemen di mana saja dalam<Project>elemen dalam file proyek Anda.Misalnya, jika Anda memiliki file proyek bernama CustomCommands.targets di folder target dalam proyek Python Anda, tambahkan kode berikut ke file proyek Anda:
<Import Project="targets/CustomCommands.targets"/>Jika file proyek mengimpor file target, dan Anda membuat perubahan pada file target saat proyek Terbuka di Visual Studio, Anda perlu membangun kembalisolusi Visual Studio yang berisi proyek Anda, dan tidak hanya proyek Anda.
Contoh perintah
Bagian berikut ini menyediakan contoh kode yang dapat Anda gunakan untuk menentukan perintah kustom untuk proyek Python Anda.
Jalankan PyLint (target modul)
Kode berikut muncul di file Microsoft.PythonTools.targets :
<PropertyGroup>
<PythonCommands>$(PythonCommands);PythonRunPyLintCommand</PythonCommands>
<PyLintWarningRegex>
<![CDATA[^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]>
</PyLintWarningRegex>
</PropertyGroup>
<Target Name="PythonRunPyLintCommand"
Label="resource:Microsoft.PythonTools.Common;Microsoft.PythonTools.Common.Strings;RunPyLintLabel"
Returns="@(Commands)">
<CreatePythonCommandItem Target="pylint.lint"
TargetType="module"
Arguments=""--msg-template={abspath}({line},{column}): warning {msg_id}: {msg} [{C}:{symbol}]" -r n @(Compile, ' ')"
WorkingDirectory="$(MSBuildProjectDirectory)"
ExecuteIn="output"
RequiredPackages="pylint>=1.0.0"
WarningRegex="$(PyLintWarningRegex)">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Gunakan perintah pip install dengan paket tertentu (target pip)
Perintah berikut menjalankan pip install my-package perintah di jendela Output Visual Studio. Anda mungkin menggunakan perintah seperti ini saat mengembangkan paket dan menguji penginstalannya. Elemen <Target> berisi nama paket bukan install perintah yang diasumsikan ketika Anda menggunakan ExecuteIn="output" definisi atribut.
<PropertyGroup>
<PythonCommands>$(PythonCommands);InstallMyPackage</PythonCommands>
</PropertyGroup>
<Target Name="InstallMyPackage" Label="pip install my-package" Returns="@(Commands)">
<CreatePythonCommandItem Target="my-package" TargetType="pip" Arguments=""
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="output">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Tampilkan paket pip yang usang (pip target)
Perintah berikut menjalankan pip dengan list fungsi untuk mengidentifikasi paket pip yang sudah usang:
<PropertyGroup>
<PythonCommands>$(PythonCommands);ShowOutdatedPackages</PythonCommands>
</PropertyGroup>
<Target Name="ShowOutdatedPackages" Label="Show outdated pip packages" Returns="@(Commands)">
<CreatePythonCommandItem Target="list" TargetType="pip" Arguments="-o --format columns"
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="consolepause">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Jalankan berkas yang dapat dieksekusi dengan perintah consolepause
Perintah berikut menjalankan where fungsi untuk memperlihatkan lokasi file Python yang dimulai dari folder proyek:
<PropertyGroup>
<PythonCommands>$(PythonCommands);ShowAllPythonFilesInProject</PythonCommands>
</PropertyGroup>
<Target Name="ShowAllPythonFilesInProject" Label="Show Python files in project" Returns="@(Commands)">
<CreatePythonCommandItem Target="where" TargetType="executable" Arguments="/r . *.py"
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="output">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Jalankan server dan jalankan perintah server debug
Untuk menjelajahi bagaimana perintah Mulai server dan Mulai server debug untuk proyek web ditentukan, periksa repositori Microsoft.PythonTools.Web.targets di GitHub.
Menginstal paket untuk pengembangan
Kode berikut menjalankan pip untuk menginstal paket:
<PropertyGroup>
<PythonCommands>PipInstallDevCommand;$(PythonCommands);</PythonCommands>
</PropertyGroup>
<Target Name="PipInstallDevCommand" Label="Install package for development" Returns="@(Commands)">
<CreatePythonCommandItem Target="pip" TargetType="module" Arguments="install --editable $(ProjectDir)"
WorkingDirectory="$(WorkingDirectory)" ExecuteIn="Repl:Install package for development">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Dari fxthomas/Example.pyproj.xml (GitHub), digunakan dengan izin.
Buat penginstal Windows
Skrip berikut menghasilkan penginstal Windows:
<PropertyGroup>
<PythonCommands>$(PythonCommands);BdistWinInstCommand;</PythonCommands>
</PropertyGroup>
<Target Name="BdistWinInstCommand" Label="Generate Windows Installer" Returns="@(Commands)">
<CreatePythonCommandItem Target="$(ProjectDir)setup.py" TargetType="script"
Arguments="bdist_wininst --user-access-control=force --title "$(InstallerTitle)" --dist-dir="$(DistributionOutputDir)""
WorkingDirectory="$(WorkingDirectory)" RequiredPackages="setuptools"
ExecuteIn="Repl:Generate Windows Installer">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Dari fxthomas/Example.pyproj.xml (GitHub), digunakan dengan izin.
Hasilkan paket roda Python
Skrip berikut menghasilkan paket roda Python :
<PropertyGroup>
<PythonCommands>$(PythonCommands);BdistWheelCommand;</PythonCommands>
</PropertyGroup>
<Target Name="BdistWheelCommand" Label="Generate Wheel Package" Returns="@(Commands)">
<CreatePythonCommandItem Target="$(ProjectDir)setup.py" TargetType="script"
Arguments="bdist_wheel --dist-dir="$(DistributionOutputDir)""
WorkingDirectory="$(WorkingDirectory)" RequiredPackages="wheel;setuptools"
ExecuteIn="Repl:Generate Wheel Package">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Dari fxthomas/Example.pyproj.xml (GitHub), digunakan dengan izin.
Memecahkan masalah perintah kustom
Tinjau bagian berikut untuk kemungkinan masalah yang terkait dengan bekerja dengan perintah kustom.
File proyek tidak dimuat
Pesan kesalahan ini menunjukkan bahwa Anda memiliki kesalahan sintaks dalam file proyek. Pesan menyertakan kesalahan tertentu dengan nomor baris dan posisi karakter.
Jendela konsol ditutup setelah perintah berjalan
Jika jendela konsol ditutup segera setelah perintah dijalankan, gunakan ExecuteIn="consolepause" definisi atribut alih-alih ExecuteIn="console".
Perintah hilang dari menu
Jika Anda tidak melihat perintah kustom pada menu konteks Python , periksa item berikut:
- Konfirmasikan bahwa perintah
<PythonCommands>disertakan dalam grup properti. - Verifikasi bahwa nama perintah seperti yang ditentukan daftar perintah cocok dengan nama yang ditentukan dalam
<Target>elemen .
Berikut ini contohnya. Dalam cuplikan XML berikut, Example nama dalam <PythonCommands> grup properti tidak cocok dengan ExampleCommand nama dalam <Target> definisi elemen. Visual Studio tidak menemukan perintah bernama Example, sehingga tidak ada perintah yang muncul.
ExampleCommand Gunakan dalam daftar perintah, atau ubah nama target menjadi hanya Example.
<PropertyGroup>
<PythonCommands>$(PythonCommands);Example</PythonCommands>
</PropertyGroup>
<Target Name="ExampleCommand" Label="Example Command" Returns="@(Commands)">
<!-- ... -->
</Target>
Kesalahan saat menjalankan perintah, gagal mendapatkan target perintah
Pesan kesalahan ini menunjukkan bahwa konten <Target> elemen atau <CreatePythonCommandItem> salah.
Berikut adalah beberapa kemungkinan alasan untuk kesalahan ini:
- Atribut elemen yang diperlukan
<Target>kosong. - Atribut yang diperlukan
TargetTypekosong atau berisi nilai yang tidak dikenali. - Atribut yang diperlukan
ExecuteInkosong atau berisi nilai yang tidak dikenali. - Atribut
ErrorRegexatauWarningRegexditentukan tanpa mengaturExecuteIn="output"definisi atribut. - Atribut yang tidak dikenal ada di elemen . Misalnya, referensi atribut mungkin salah eja sebagai
ArgumnetsbukanArguments.
Nilai atribut dapat kosong jika Anda merujuk ke properti yang tidak ditentukan. Jika Anda menggunakan token $(StartupFile) tetapi tidak ada file startup yang ditetapkan dalam proyek, token akan menjadi string kosong. Dalam kasus seperti itu, Anda mungkin ingin menentukan nilai default. Misalnya, perintah Jalankan server dan Jalankan server debug yang ditentukan dalam templat proyek Bottle, Flask, dan Django menggunakan file manage.py secara default (jika file startup server tidak ditentukan dalam properti proyek).
Visual Studio berhenti merespons, mengalami crash
Jika Visual Studio berhenti merespons dan mengalami crash saat menjalankan perintah kustom, Anda mungkin mencoba menjalankan perintah konsol dengan ExecuteIn="output" definisi atribut. Dalam kasus seperti itu, Visual Studio mungkin mengalami crash saat mencoba mengurai output. Untuk menghindari kondisi ini, gunakan definisi atribut sebagai gantinya ExecuteIn="console" . Untuk informasi selengkapnya, lihat Masalah 3681.
Perintah tidak dikenali sebagai program yang dapat dioperasikan atau file batch
Saat Anda mengatur TargetType="executable" definisi atribut, nilai dalam Target atribut harus hanya nama program tanpa argumen apa pun, seperti python atau python.exe saja. Dalam hal ini, pindahkan argumen apa pun ke Arguments atribut .