Я пишу мультиплатформенное приложение командной строки c# с использованием. NET Core 3.1, которое должно работать как один исполняемый файл. Я использую Visual Studio 2019 (16.5.4). Моя ОС - Windows 10.0.18363.778, и я намеренно НЕ установил Powershell 7. Я тестировал этот первый бит на своих Windows и WSL Ubuntu, и он работал, пока я не добавил Powershell SDK 7. После того, как я установил Microsoft.Powershell.SDK 7.0 .0 и когда Ì установите файл проекта следующим образом, все работает хорошо, и я могу проверить, что я использую PS7, а не Windows PS.
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
Однако, когда я добавляю runtimeIdentifier в PropertyGroup:
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
Сборка успешно завершена без ошибок. Однако, когда я запускаю (как отладочную, так и автономную) и приложение обращается к Powershell.Invoke, оно выдает исключение FileNotFound с сообщением:
«Не удалось загрузить файл или сборку» Microsoft.Management.Infrastructure, Version = 1.0.0.0 , Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35 '. Системе не удается найти указанный файл. "
1) Чего не хватает, чтобы получить все зависимости в исполняемом каталоге?
2) Когда я добавьте следующее, чтобы создать один исполняемый файл
<PublishSingleFile>true</PublishSingleFile>
<UseAppHost>true</UseAppHost>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
Он не создается. Я получаю исполняемый файл, если использую: «do tnet publi sh -r win-x64 - c Debug», но ничего не происходит, когда я запускаю его. (Этот шаг работал нормально до PS7) Есть ли еще что-нибудь, что мне нужно сделать, чтобы запустить один исполняемый файл?