Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reference System.Management.Automation in a .NET Framework 4.7.2?

I started a new .NET Framework 4.7.2 library project. I need to automate PowerShell scripts, but the "framework" tab in Visual Studio's reference adding UI didn't list System.Management.Automation as an option. So I added a reference to this Nuget package:

https://www.nuget.org/packages/System.Management.Automation/7.0.0

Then with this code:

PowerShell ps = PowerShell.Create();
ps.AddScript(@"C:\ps\function.ps1");
ps.AddArgument(1);
ps.AddArgument(2);
Collection<PSObject> results = ps.Invoke<PSObject>();

I get this error about versions of a DLL which I did not directly reference:

Assembly 'System.Management.Automation' with identity 'System.Management.Automation, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' uses 'System.Linq.Expressions, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Linq.Expressions' with identity 'System.Linq.Expressions, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

I'm not sure how to resolve this, and I think maybe I approached adding my PowerShell automation library reference the wrong way. What's the right way to do this currently?

Before you point me at an old answer, I found a similar question about this which points to a different Nuget package, now marked "deprecated" and doesn't look official anyway. That makes me nervous.

https://www.nuget.org/packages/System.Management.Automation.dll/

like image 983
BigScary Avatar asked Apr 03 '20 17:04

BigScary


People also ask

Where is system management automation DLL?

dll from C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System. Management.

What is system management automation?

System. Management. Automation is an extension library from Microsoft and it can be added to Visual Studio projects via NuGet package manager or package manager console.


2 Answers

System.Management.Automation v7.0.0 only works with .NET Core. If your project requires .NET Framework, you must use System.Management.Automation v5.1.x.

like image 52
Steve Lee Avatar answered Nov 15 '22 07:11

Steve Lee


I use System.Management.Automation.dll in my .net framework 4.7.2 app. I just added it via the following reference:

C:\WINDOWS\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
like image 32
isxaker Avatar answered Nov 15 '22 05:11

isxaker