【发布时间】:2018-07-05 02:47:42
【问题描述】:
所以我有这个 Powershell 脚本可以在 gac 中安装 MySql dll。
[System.Reflection.Assembly]::Load("System.EnterpriseServices,Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll")
此脚本在 Windows Server 2012 R2 上运行良好,但在 Windows Server 2008 r2 上抛出异常。
使用“1”参数调用“加载”的异常:“无法加载文件或 程序集'System.EnterpriseServices,版本=4.0 .0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其其中之一 依赖关系。系统找不到指定的文件。”在 C:\Users\Administrator\Desktop\MyScript.ps1:2 char:35 + [System.Reflection.Assembly]::Load
1) Powershell 以管理员身份运行
2) System.EnterpriseServices存在于4.0.0版本的系统中(位置:C:\Windows\Microsoft.NET\assembly\GAC_64\System.EnterpriseServices)
3) GacUtil 不是一个选项,因为 sdk 在生产环境中不可用。
在 windows server 2008 r2 上安装 Gac 有什么限制吗?
为什么在 windows server 2012 r2 中运行的脚本在 windows server 2008 r2 上不运行?
我是否缺少服务器上的任何设置以使其正常工作?
【问题讨论】:
-
可以去掉程序集名称的版本部分吗?
-
试过这样“System.EnterpriseServices, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”,同样的错误
-
只是
System.EnterpriseServices -
同样的错误:使用“1”参数调用“加载”的异常:“无法加载文件或程序集‘System.EnterpriseServices’或其依赖项之一。系统找不到文件指定的。”在 C:\Users\Administrator\Desktop\MySqlEf6Gac.ps1:2 char:35 + [System.Reflection.Assembly]::Load
-
@DanielA.White 虽然如果我使用程序集版本 2.0.0 作为 [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a") ,脚本成功运行,但 GAC 中没有安装任何内容。在事件查看器中,我收到警告:在全局程序集缓存中安装失败:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.Entity.EF6.dll:来源: COM+ SOAP 服务
标签: c# .net windows powershell