2014-12-16 28 views
6

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?

+0

jesteś w stanie po prostu zaktualizować PowerShell na 7 pole okna? '> choco install Powershell' z [Chocolatey] (https://chocolatey.org/) –

+0

Cóż, będziesz musiał wybrać system .NET 3.5, jeśli chcesz, aby PowerShell wersja 2 mogła załadować bibliotekę dll. –

+0

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

Odpowiedz

7

Powershell 2.0 nie obejmuje System.Management.Automation V3. System.Management.Automation zapewnia system Windows Management Framework Core, a nie .Net. Jeśli masz Powershell 2.0, nie masz Automation 3.0. Aby uzyskać listę jakie pliki/zespoły są w PowerShell 2.0 należy odwiedzić następującą witrynę:

Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)

nowszą wersję PowerShell 4.0, instalując WMF 4.0 firmy Microsoft na komputerze docelowym.

http://www.microsoft.com/en-us/download/details.aspx?id=40855

+0

Cześć przepraszam, że nie było mnie na weekend, zaznaczyłem to jako odpowiedź. Czy mimo to mój program może pracować z wersją Power Shell 3+ i wersją 2? wydaje się niemożliwe. – Matt416

+1

Jedna z dwóch rzeczy musiałaby wystąpić. Albo przepisz program dla zespołu 2.0, albo zmodyfikuj zestaw, aby twój program działał natywnie. To są tylko dwie opcje, które znam: - / – Colyn1337

Powiązane problemy