Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При разработке проектов Python вы можете переключиться в командное окно для выполнения определенных скриптов или модулей, выполнения команд pip или использования других средств с кодом. Чтобы улучшить рабочий процесс, можно добавить пользовательские команды в меню проекта Python в Visual Studio. Пользовательские команды Python могут выполняться в окне консоли или в окне вывода Visual Studio. Вы также можете использовать регулярные выражения, чтобы указать Visual Studio, как анализировать ошибки и предупреждения из выходных данных команды.
Предпосылки
- Visual Studio на Windows, установленный с поддержкой Python-разработки. Дополнительные сведения см. в статье "Установка поддержки Python в Visual Studio".
Visual Studio для Mac не поддерживается. Visual Studio Code в Windows, Mac и Linux хорошо работает с Python с помощью доступных расширений.
Исследуйте пользовательские команды
По умолчанию меню проекта Python содержит две команды : Запустите PyLint и Run Mypy:
Все пользовательские команды Python, которые вы определили, появляются в этом же меню. Пользовательская команда может ссылаться на файл Python, модуль Python, встроенный код Python, произвольный исполняемый файл или команду pip. Вы также можете указать, как и где выполняется команда.
Вы можете добавить пользовательские команды несколькими способами:
Определите пользовательские команды непосредственно в файле проекта Python (PYPROJ). Эти команды применяются к конкретному проекту.
Определите пользовательские команды в файле целевых объектов (.targets). Команды в этом файле можно легко импортировать, чтобы использовать их с несколькими проектами.
Создайте проект Python из шаблона проекта в Visual Studio, который определяет пользовательские команды Python.
Некоторые шаблоны проектов Python в Visual Studio добавляют пользовательские команды с помощью файла целей. Шаблоны веб-проектов "Бутылка" и "Веб-проект Flask" добавляют две команды: "Пуск" и "Запуск сервера отладки". Шаблон веб-проекта Django добавляет следующие команды и несколько других:
Перезагрузите проект для доступа к пользовательским командам
При открытии проекта в Visual Studio при внесении изменений в соответствующий файл проекта в редакторе необходимо перезагрузить проект, чтобы применить изменения. Аналогичным образом после определения пользовательских команд Python в файле проекта Python необходимо перезагрузить проект Python, чтобы команды отображались в меню проекта Python . При изменении пользовательских команд, определенных в целевом файле, необходимо перестроить полное решение Visual Studio для любого проекта, который импортирует этот целевой файл.
Распространенный подход заключается в внесении изменений в файл проекта Python непосредственно в Visual Studio:
Откройте проект Python в Visual Studio. (При открытии проекта в Visual Studio проект загружается по умолчанию.)
В обозревателе решений щелкните правой кнопкой мыши проект Python и выберите "Выгрузить проект".
Visual Studio выгрузит проект и открывает соответствующий файл проекта Python (PYPROJ) в редакторе.
Если файл проекта не открыт, снова щелкните проект Python правой кнопкой мыши и выберите команду Изменить файл проекта:
Внесите изменения в файл проекта в редакторе Visual Studio и сохраните работу.
В обозревателе решений щелкните правой кнопкой мыши выгрузочный проект и выберите команду "Перезагрузить проект". Если вы пытаетесь перезагрузить проект без сохранения изменений в файле проекта, Visual Studio предложит выполнить действие.
Процесс выгрузки-редактирования-сохранения-перезагрузки может стать трудоемким при разработке пользовательских команд. Более эффективный рабочий процесс включает одновременную загрузку проекта в Visual Studio и открытие файла проекта Python в отдельном редакторе. Вы можете использовать любой редактор, например другой экземпляр Visual Studio, Visual Studio Code, Блокнот и т. д. После сохранения изменений в редакторе и переключения на Visual Studio Visual Studio обнаруживает изменения файла проекта для открытого проекта и запрашивает выполнение действий:
Выберите "Перезагрузить " или " Перезагрузить все " и Visual Studio немедленно применяет изменения файла проекта к открытому проекту.
Добавление пользовательских команд с помощью файла проекта
В следующей процедуре показано, как создать пользовательскую команду, добавив определение в файл проекта Python (PYPROJ) и перезагрузив проект в Visual Studio. Пользовательская команда запускает файл запуска проекта непосредственно с помощью команды python.exe, которая в основном аналогична использованию параметра Отладка>Запуск без отладки на главной панели инструментов Visual Studio.
В Visual Studio создайте проект Python с именем Python-CustomCommands с помощью шаблона приложения Python . Инструкции см. в кратком руководстве по созданию проекта Python на основе шаблона.
Visual Studio создает проект Python и загружает его в сеанс. Проект можно настроить с помощью файла проекта (PYPROJ). Этот файл отображается только в Visual Studio, когда проект открыт, но не загружен. Проект также содержит файл Python (.py) для кода приложения.
Откройте файл приложения Python_CustomCommands.py в редакторе и добавьте следующий код:
print("Hello custom commands")В обозревателе решений щелкните правой кнопкой мыши проект Python, выберите Python и обратите внимание на команды в контекстном меню. В настоящее время единственными командами в контекстном меню являются Запуск PyLint и Запуск Mypy. При определении пользовательских команд они также отображаются в этом меню.
Запустите отдельный редактор за пределами сеанса Visual Studio и откройте файл проекта Python (Python-CustomCommands.pyproj) в редакторе. (Не забудьте открыть файл проекта (PYPROJ) и не файл приложения Python (.py).)
В файле проекта найдите закрывающий элемент в конце файла и добавьте следующий XML-код непосредственно перед закрывающим
</Project>элементом:<PropertyGroup> <PythonCommands> $(PythonCommands); </PythonCommands> </PropertyGroup>Сохраните изменения файла проекта и вернитесь в Visual Studio. Visual Studio обнаруживает изменения файла проекта и запрашивает действия. В командной строке выберите "Перезагрузить ", чтобы обновить открытый проект с изменениями файла проекта.
В обозревателе решений щелкните правой кнопкой мыши проект Python, выберите Python и проверьте команды в контекстном меню.
Контекстное меню по-прежнему отображает только команды Run PyLint и Run Mypy . Только что добавленный в файл проекта код просто реплицирует группу свойств по умолчанию
<PythonCommands>, содержащую команду PyLint . На следующем шаге вы добавите дополнительный код для пользовательской команды.Перейдите в редактор, в котором обновляется файл проекта. Добавьте следующее определение элемента
<Target>в элемент<Project>. Определение<Target>можно разместить до или после определения<PropertyGroup>, описанного выше.Этот
<Target>элемент определяет пользовательскую команду для запуска файла запуска проекта (определяемого свойством StartupFile ) с помощьюpython.exeкоманды в окне консоли. ОпределениеExecuteIn="consolepause"атрибута использует консоль, которая ожидает выбора ключа, чтобы закрыть окно консоли.<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>на шаге 5) следующим XML-кодом. Этот синтаксис определяет атрибутNameдля элемента<Target>, который добавляет пользовательскую команду в контекстное меню Python. В команде есть метка меню Запуск файла запуска.<PythonCommands> $(PythonCommands); Example_RunStartupFile </PythonCommands>Подсказка
Если вы хотите, чтобы пользовательская команда отображалась в контекстном меню перед командами по умолчанию, определенными в маркере
$(PythonCommands), поместите<Target>синтаксис команды перед этим маркером.Сохраните изменения файла проекта и вернитесь в Visual Studio. На приглашении командной строки перезагрузите ваш проект.
В обозревателе решений щелкните правой кнопкой мыши проект Python, выберите Python и проверьте команды в контекстном меню.
Теперь настраиваемая команда запуска файла запуска находится в меню. Если пользовательская команда не отображается, убедитесь, что вы добавили значение атрибута
Nameэлемента<Target>в элемент<PythonCommands>, как описано в шаге 9. Также ознакомьтесь с рекомендациями, перечисленными в разделе "Устранение неполадок " далее в этой статье.Выберите команду Запуск стартового файла. Откроется окно консоли и отображается текст настраиваемых команд Hello , а затем нажмите любой ключ, чтобы продолжить. Подтвердите выходные данные и закройте окно консоли.
Замечание
Настраиваемый скрипт команд выполняется в активированной среде для проекта Python.
Перейдите в редактор с файлом проекта.
<Target>В определении элемента (добавленном на шаге 8), измените значение атрибутаExecuteInнаoutput.<CreatePythonCommandItem ... ExecuteIn="output"> ... </CreatePythonCommandItem>Сохраните изменения, переключитесь на Visual Studio и перезагрузите проект.
Снова выберите пользовательскую команду запуска файла запуска в контекстном меню Python . Теперь выходные данные программы отображаются в окне вывода Visual Studio, а не в окне консоли:
Чтобы добавить дополнительные пользовательские команды, выполните следующий процесс:
Определите подходящий
<Target>элемент для пользовательской команды в файле проекта.NameДобавьте значение атрибута<Target>для элемента в группу<PythonCommands>свойств.Сохраните изменения в файле проекта.
Перезагрузите проект в Visual Studio.
Использование свойств проекта
Чтобы ссылаться на свойства проекта или переменные среды в <Target> значениях атрибутов элемента, используйте имя свойства в маркере $() , например $(StartupFile) и $(MSBuildProjectDirectory). Дополнительные сведения см. в разделе свойства MSBuild.
Если вы вызываете команду, которая использует свойства проекта, такие как свойство ($StartupFile), и команда завершается ошибкой из-за того, что токен не определен, Visual Studio отключает команду до тех пор, пока вы не перезагрузите проект. При внесении изменений в проект, который изменяет определение свойства, изменения не обновляют состояние связанной команды. В этом случае необходимо перезагрузить проект.
Общие сведения о <структуре элементов Target>
Вы определяете сведения для пользовательской команды с помощью <Target> элемента. Общая форма <Target> элемента показана в следующем псевдокоде:
<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>
Целевые атрибуты
В следующей <Target> таблице перечислены атрибуты элемента.
| Свойство | Обязательно | Description |
|---|---|---|
Name |
Да | Идентификатор команды в проекте Visual Studio. Это имя необходимо добавить в <PythonCommands> группу свойств, чтобы команда отображалась в контекстном меню Python . |
Label |
Да | Имя интерфейса пользователя, отображаемое в контекстном меню Python. |
Returns |
Да | Возвращенные сведения, которые должны содержать токен @(Commands), идентифицирующий целевой объект как команду. |
Атрибуты CreatePythonCommandItem
Элемент <Target> содержит <CreatePythonCommandItem> и <Output> элементы, определяющие подробное поведение пользовательской команды. В следующей таблице перечислены доступные <CreatePythonCommandItem> атрибуты элемента. Все значения атрибутов не зависят от регистра.
Attribute |
Обязательно | Description |
|---|---|---|
TargetType |
Да | Указывает, что Target содержит атрибут и как используется значение вместе с атрибутом Arguments : - executable: Запустите исполняемый файл с именем в Target атрибуте, добавив значение в Arguments атрибут, как если бы он был введен непосредственно в командной строке. Значение должно содержать только имя программы без аргументов. - script: выполните команду python.exe с именем файла в атрибуте Target, а затем значением в атрибуте Arguments. - module: выполните python -m команду, за которой следует имя модуля в Target атрибуте, а затем значение в атрибуте Arguments . - code: запустите встроенный код, содержащийся в атрибуте Target . Игнорировать значение атрибута Arguments . - pip: выполните pip с командой, указанной в атрибуте Target, затем выполните значение, указанное в атрибуте Arguments. Если для атрибута ExecuteIn установлено значение output, pip предполагает, что запрос предназначен для выполнения install команды и использует атрибут Target как имя пакета. |
Target |
Да | Указывает имя файла, имя модуля, код или команду pip, используемую в зависимости от значения атрибута TargetType . |
Arguments |
Необязательно | Предоставляет строку аргументов (при наличии) для использования с атрибутом Target . — Если значение атрибута TargetType равно script, Arguments значение предоставляется программе Python, а не команде python.exe . — Если значение атрибута TargetType равно code, Arguments значение игнорируется. |
ExecuteIn |
Да | Указывает среду, в которой выполняется команда: - console: (По умолчанию) Выполняет атрибут Target с значением Arguments, как при непосредственном вводе в командной строке. Во время выполнения атрибута Target откроется командное окно и закрывается автоматически. - consolepause: аналогичное поведение console, но ожидает нажатия клавиши перед закрытием окна. - output: запускает Target атрибут и отображает результаты в окне вывода Visual Studio.
TargetType Если атрибут имеет значениеpip, Visual Studio использует Target атрибут в качестве имени пакета и добавляет значение атрибутаArguments. - repl: запускает Target атрибут в интерактивном окне Python. Необязательное отображаемое имя используется для заголовка окна. - none: то же поведение, что и console. |
WorkingDirectory |
Необязательно | Определяет папку, в которой выполняется команда. |
ErrorRegex WarningRegEx |
Необязательно | Используется только в том случае, если ExecuteIn для атрибута задано значение output. Оба значения атрибута указывают регулярное выражение, которое Visual Studio использует для анализа выходных данных команды и отображения ошибок и предупреждений в окне списка ошибок . Если эти атрибуты не указаны, команда не влияет на окно списка ошибок . Дополнительные сведения о том, что ожидает Visual Studio, см. в разделе "Именованные группы записи". |
RequiredPackages |
Необязательно | Предоставляет список требований к пакету для команды, используя тот же формат, что и файл requirements.txt (pip.readthedocs.io). Например, команда Run PyLint указывает формат pylint>=1.0.0. Перед выполнением команды Visual Studio подтверждает установку всех пакетов в списке. Visual Studio использует pip для установки отсутствующих пакетов. |
Environment |
Необязательно | Определяет строку переменных среды для определения перед выполнением команды. Каждая переменная использует форму \<NAME>=\<VALUE> с несколькими переменными, разделенными точкой с запятой. Переменная с несколькими значениями должна содержаться в одинарных или двойных кавычках, как в 'NAME=VALUE1;VALUE2'. |
Именованные группы записи для регулярных выражений
Когда Visual Studio анализирует ошибки и предупреждения из вывода пользовательских команд, она ожидает, что регулярные выражения в значениях атрибутов ErrorRegex и WarningRegex будут использовать следующие именованные группы:
-
(?<message>...): текст ошибки. -
(?<code>...): значение кода ошибки. -
(?<filename>...): имя файла, для которого сообщается ошибка. -
(?<line>...): номер строки расположения в файле, для которого сообщается ошибка. -
(?<column>...): номер столбца расположения в файле, для которого сообщается ошибка.
Например, PyLint выдает предупреждения следующей формы:
************* Module hello
C: 1, 0: Missing module docstring (missing-docstring)
Чтобы разрешить Visual Studio извлекать нужные сведения из этих предупреждений и отображать их в окне списка ошибок , WarningRegex значение атрибута для команды Run Pylint выглядит следующим образом:
^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]
Замечание
Синтаксис msg_id в значении атрибута должен фактически быть WarningRegex, как описано в code.
Импорт пользовательских команд с помощью целевого файла
Если вы определяете пользовательские команды в файле проекта Python, команды доступны только для этого конкретного проекта. Если вы хотите создать пользовательские команды и использовать их в нескольких проектах, можно определить <PythonCommands> группу свойств со всеми <Target> элементами в целевом файле (.targets), а затем импортировать этот файл в проекты Python.
Целевой файл использует тот же формат и синтаксис для определения пользовательских команд, как описано в файле проекта Python (PYPROJ). Общие элементы, которые необходимо настроить, включают
<PythonCommands>,<Target><CreatePythonCommandItem>и<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>Чтобы импортировать файл targets в проект, добавьте элемент
<Import Project="(path)">в любом месте элемента<Project>в файле проекта.Например, если у вас есть файл проекта с именем CustomCommands.targets в папке целевых объектов в проекте Python, добавьте следующий код в файл проекта:
<Import Project="targets/CustomCommands.targets"/>Если файл проекта импортирует целевой файл и вносите изменения в целевой файл во время открытия проекта в Visual Studio, необходимо перестроитьрешение Visual Studio, содержащее проект, а не только проект.
Примеры команд
В следующих разделах приведен пример кода, который можно использовать для определения пользовательских команд для проектов Python.
Запуск PyLint (целевой объект модуля)
Следующий код отображается в файле 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>
Запуск установки pip с определенным пакетом (целевой объект pip)
Следующая команда выполняет pip install my-package команду в окне вывода Visual Studio. Вы можете использовать следующую команду при разработке пакета и тестировании его установки. Элемент <Target> содержит имя пакета, а не install команду, которая предполагается при использовании определения атрибута ExecuteIn="output" .
<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>
Отображение устаревших пакетов pip (целевой объект pip)
Следующая команда запускает pip с list функцией для идентификации устаревших пакетов pip:
<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>
Запуск исполняемого файла с паузой в консоли
Следующая команда запускает where функцию для отображения расположения файлов Python, начиная с папки проекта:
<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>
Запуск сервера и выполнение команд сервера отладки
Чтобы узнать, как определены команды сервера запуска и запуска отладочного сервера для веб-проектов, изучите репозиторий Microsoft.PythonTools.Web.targets на сайте GitHub.
Установка пакета для разработки
Следующий код запускает pip для установки пакетов:
<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>
Из fxthomas/Example.pyproj.xml (GitHub), используемого с разрешением.
Создание установщика Windows
Следующий скрипт создает установщик 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>
Из fxthomas/Example.pyproj.xml (GitHub), используемого с разрешением.
Создание wheel-пакета для Python
Следующий скрипт создает пакет колеса 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>
Из fxthomas/Example.pyproj.xml (GitHub), используемого с разрешением.
Устранение проблем с пользовательскими командами
Ознакомьтесь со следующими разделами о возможных проблемах, связанных с работой с пользовательскими командами.
Файл проекта не загружен
Это сообщение об ошибке указывает на наличие синтаксической ошибки в файле проекта. Сообщение содержит конкретную ошибку с номером строки и положением символов.
Окно консоли закрывается после выполнения команды
Если окно консоли закрывается сразу после выполнения команды, используйте определение атрибута ExecuteIn="consolepause" вместо ExecuteIn="console".
Команда, отсутствуюющая в меню
Если в контекстном меню Python не отображается настраиваемая команда, проверьте следующие элементы:
- Убедитесь, что команда включена в группу
<PythonCommands>свойств. - Убедитесь, что имя команды, указанное в списке команд, соответствует имени, указанному в элементе
<Target>.
Вот пример. В следующем фрагменте Example XML имя в <PythonCommands> группе свойств не соответствует ExampleCommand имени в определении <Target> элемента. Visual Studio не находит команду с именем Example, поэтому команда не отображается. Используйте ExampleCommand в списке команд или измените имя целевого объекта на Example.
<PropertyGroup>
<PythonCommands>$(PythonCommands);Example</PythonCommands>
</PropertyGroup>
<Target Name="ExampleCommand" Label="Example Command" Returns="@(Commands)">
<!-- ... -->
</Target>
Ошибка при выполнении команды, не удалось получить целевой объект команды
Это сообщение об ошибке указывает, что содержимое <Target> или <CreatePythonCommandItem> элементы неверны.
Ниже приведены некоторые возможные причины этой ошибки:
- Обязательный
<Target>атрибут элемента пуст. - Обязательный
TargetTypeатрибут пуст или содержит нераспознанное значение. - Обязательный
ExecuteInатрибут пуст или содержит нераспознанное значение. - Параметр
ErrorRegexилиWarningRegexатрибут указан без задания определения атрибутаExecuteIn="output". - Нераспознанные атрибуты существуют в элементе. Например, ссылка на атрибут может быть написана с ошибкой как
Argumnets, а неArguments.
Значения атрибутов могут быть пустыми, если вы ссылаетесь на свойство, которое не определено. Если вы используете токен $(StartupFile), но файл запуска не определен в проекте, токен заменяется на пустую строку. В таких случаях может потребоваться определить значение по умолчанию. Например, команды сервера запуска и запуска сервера отладки , определенные в шаблонах проектов Bottle, Flask и Django, используют файл manage.py по умолчанию (если файл запуска сервера не указан в свойствах проекта).
Visual Studio перестает отвечать, вылетает
Если Visual Studio перестает отвечать и завершает работу при выполнении настраиваемой команды, вероятно, вы пытаетесь запустить консольную команду с определением атрибута ExecuteIn="output" . В таких случаях Visual Studio может завершиться сбоем при попытке проанализировать выходные данные. Чтобы избежать этого условия, используйте вместо этого определение атрибута ExecuteIn="console" . Дополнительные сведения см. в статье "Проблема 3681".
Команда не распознана как операбловый или пакетный файл
При задании TargetType="executable" определения атрибута значение в Target атрибуте должно быть только именем программы без каких-либо аргументов, таких как python или python.exe. В этом случае переместите все аргументы в Arguments атрибут.