添加类型:无法添加类型。无法找到程序集“System.IO.Compression.FileSystem”

时间:2016-04-20 08:44:43

标签: .net powershell

我在TeamCity Builds中使用简单的PowerShell脚本。

它需要System.IO.Compression.FileSystem并且代理已安装.NET 4.5.2。以下是安装的.NET框架

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脚本有以下行

[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加载程序集

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:5)

尝试加载特定的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

答案 1 :(得分:1)

LoadWithPartialName()工作以来,您可以使用返回的Location属性来加载DLL。

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

答案 2 :(得分:0)

运行PowerShell脚本时出现完全相同的错误。我想这是安装.Net版本与PowerShell版本的一些冲突。在我的例子中帮助我将PowerShell版本更新到最新版本。可以在这里找到:

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

答案 3 :(得分:0)

尝试添加它(并删除最后一部分) 添加类型-AssemblyName System.IO.Compression