我在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
加载程序集
任何帮助将不胜感激
答案 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