Buduję aplikację w języku C#, jak dotąd wszystko, co robi, to wywołanie polecenia" uruchom proces ".Nie można załadować pliku lub zestawu "System.Management.Automation, Version = 3.0.0.0
Mam edytowany plik csproj zawierać System.Management.Automation
<ItemGroup>
<Reference Include="System.Management.Automation" />
Kiedy uruchomić lokalnie (Windows PowerShell 8.1 działa w wersji 4) działa.
Po uruchomieniu na zdalnym komputerze z systemem Windows 7 PowerShell w wersji 2, program zgłasza wyjątek
System.IO.FileNotFoundException: Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
nie może znaleźć System.Management.Automation Version = 3.0.0.0. Doprowadziło mnie to do przekonania, że działa to w przypadku dowolnej wersji Powershell i odwołuje się do lokalnej wersji:
Polecenie cmdlet działa w systemie PS V2.
Czy można przerwać wymuszanie wersji 3 automatyzacji zarządzania systemem? Czytałem, że możesz to zrobić w app.config, ale nie ma odniesienia do automatyzacji zarządzania systemem.
Dziękuję za poświęcony czas.
---------------------------------------------- -------- EDYTOWAĆ ----------------------------------------- ------
Udało mi się wykonać tę pracę, ale ustawiłem ramę Target na .Net 3.5, jednak to teraz wymusza PS V2. Czy mimo to mogę kierować na lokalną wersję biblioteki zarządzania systemem i sprawić, że klienci będą używać tej wersji?
jesteś w stanie po prostu zaktualizować PowerShell na 7 pole okna? '> choco install Powershell' z [Chocolatey] (https://chocolatey.org/) –
Cóż, będziesz musiał wybrać system .NET 3.5, jeśli chcesz, aby PowerShell wersja 2 mogła załadować bibliotekę dll. –
To wydaje się trochę bzdurne w tym, że kierując NET 3.5, zmuszam każdego klienta do PowerShell 2 i PowerShell 2 tylko .. Na pewno jest inny sposób? – Matt416