Add-Type: Невозможно добавить тип. Не удалось найти сборку "System.IO.Compression.FileSystem"

Я использую простой PowerShell script в TeamCity Builds.

Для этого требуется System.IO.Compression.FileSystem, а у агента установлен .NET 4.5.2. Ниже представлены .NET frameworks

PSChildName         Version             Release             Product            
-----------         -------             -------             -------            
v2.0.50727          2.0.50727.5420                                             
v3.0                3.0.30729.5420                                             
Windows Communic... 3.0.4506.5420                                              
Windows Presenta... 3.0.6920.5011                                              
v3.5                3.5.30729.5420                                             
Client              4.5.51209           379893              4.5.2              
Full                4.5.51209           379893              4.5.2              
Client              4.0.0.0                                    

PowerShell script имеет следующую строку

[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem");
Add-Type -AssemblyName System.IO.Compression.FileSystem

Во второй строке выполнение завершится с ошибкой

Add-Type : Cannot add type. The assembly 'System.IO.Compression.FileSystem' could not be found.
At C:\BuildAgent\someFile.ps1:104 char:13
+     Add-Type <<<<  -AssemblyName System.IO.Compression.FileSystem
+ CategoryInfo          : ObjectNotFound: (System.IO.Compression.FileSystem:String) [Add-Type], Exception
+ FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands.AddTypeCommand

Странно, но я ожидал, что с .NET 4.5.2, PowerShell должен иметь возможность загружать сборку из GAC

Любая помощь будет оценена

Ответ 1

Попробуйте загрузить определенную DLL:

Add-Type -Path C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.IO.Compression.FileSystem\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.FileSystem.dll

Ответ 2

У меня была точно такая же ошибка при запуске скрипта PowerShell. Я предполагаю, что это было некоторое коллизия установленной версии .Net с версией PowerShell. В моем случае мне помогло просто обновить версию PowerShell до новейшей. Можно найти здесь:

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

Ответ 3

Попробуйте добавить это вместо этого (и удалите последнюю часть) Add-Type -AssemblyName System.IO.Compression