Я использую Visual Studio для Mac (7.7.2; сборка 21) для создания поставщика PowerShell с помощью C#.
Я бы хотел, чтобы среда IDE загружала PowerShell для отладки.
Конфигурация запуска проекта:
- Запустить внешний проект:
/usr/local/bin/pwsh
- Аргументы:
-NoProfile -NoExit -File "./InstallProvider.ps1"
InstallProvider.ps1
:
Import-Module "./PsMyModule.psd1" -Force -Verbose
PsMyModule.psd1
:
@{
# Script module or binary module file associated with this manifest.
RootModule = 'PsMyModule.dll'
}
Оба файла (ps1
,psd1
) помечены Copy to output
.
Когда я запускаю проект в режиме отладки, я получаю эту ошибку:
Аргумент './InstallProvider.ps1' не распознается как имя файла сценария. Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку.
Использование: pwsh[.exe] [[-File] [args]] [-Command { - | [-аргументы] | [] } ] [-ConfigurationName] [-EncodedCommand] [-ExecutionPolicy] [-InputFormat {Текст | XML}] [-Interactive] [-NoExit] [-NoLogo] [-NonInteractive] [-NoProfile] [-OutputFormat {Text | XML}] [-Version] [-WindowStyle] [-WorkingDirectory]
pwsh[.exe] -h | -Help | -? | /?
Онлайн-справка PowerShell https://aka.ms/pscore6-docs
Все параметры нечувствительны к регистру. Приложение было завершено неизвестным сигналом: текущая платформа не поддерживает это значение. Имя параметра: значение Фактическое значение было 64.
Однако когда я запускаю pwsh
из терминала, модуль загружается, как и ожидалось:
~/.../bin/Debug/netstandard2.0$ pwsh -NoExit -File "./InstallProvider.ps1"
PowerShell 6.1.1
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
VERBOSE: Loading module from path '/Users/[user]/Projects/Visual Studio 2017/PsMyModule/bin/Debug/netstandard2.0/PsMyModule.psd1'.
VERBOSE: Loading module from path '/Users/[user]/Projects/Visual Studio 2017/PsMyModule/bin/Debug/netstandard2.0/PsMyModule.dll'.
Ни один из этих вариантов не работает:
-File ".\InstallProvider.ps1"
-File InstallProvider.ps1
-File "./InstallProvider.ps1"
** редактировать 0 **
Я изменил параметр File
на "/Users/[user]/Projects/Visual Studio 2017/PsMyModule/bin/Debug/netstandard2.0/InstallProvider.ps1"
PowerShell 6.1.1
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
Import-Module : The specified module './PsMyModule.psd1' was not loaded because no valid module file was found in any module directory.
At /Users/[user]/Projects/Visual Studio 2017/PsMyModule/bin/Debug/netstandard2.0/InstallProvider.ps1:1 char:1
+ Import-Module "./PsMyModule.psd1" -Force -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (./PsMyModule.psd1:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
PS />
Казалось бы, относительные пути интерпретируются неправильно. Кроме того, подсказка PS \>
, похоже, не принимает ввод.
** /редактировать 0 **
** редактировать 1 **
Я создал аналогичный проект в Visual Studio 2017 для Windows. Настройки отладки:
который загрузил модуль, как и ожидалось:
VERBOSE: Loading module from path 'C:\Users\XXX\source\repos\ClassLibrary1\ClassLibrary1\bin\Debug\netstandard2.0\FooModule.psd1'.
VERBOSE: Loading module from path 'C:\Users\XXX\source\repos\ClassLibrary1\ClassLibrary1\bin\Debug\netstandard2.0\FooModule.dll'.
PS C:\Users\XXX\source\repos\ClassLibrary1\ClassLibrary1\bin\Debug\netstandard2.0>
** /изменить 1 **
Что мне не хватает? Чем отличается версия OS X?