提醒未能加载,未能加载钦赐的模块

Power Shell管理Office参考

“/”应用程序中的服务器错误。


前天在编译2个Windows
Form程序时.突然意识叁个难题.在本机开采境况[X64位]能够很好调用.等包裹安装后放置叁拾2人机器是意料之外开采提醒二个荒谬如下:

操作系统: Windows server 二〇一〇 RAV42(62位)

C#调用Power Shell 参考

未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某二个正视项。找不到钦赐的模块。

说明: 实行当前
Web
请求时期,出现未经管理的足够。请检查饭店追踪音信,以询问关于该错误以及代码中造成错误的出处的详细消息。 

老大详细新闻: System.IO.FileNotFoundException:
未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某一个借助项。找不到内定的模块。

源错误: 

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

仓库追踪: 

[FileNotFoundException: 未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某一个依赖项。找不到指定的模块。]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: 未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某一个依赖项。找不到指定的模块。]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521

[HttpException (0x80004005): 未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某一个依赖项。找不到指定的模块。]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9951956
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

 


版本新闻: Microsoft
.NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.34249

 

 

下边提到的dll是C++.Net编写翻译出来的。而且是三十个人的dll

后边已经将IIS的选用程序池修改为合营3肆个人的了

 

澳门葡京备用网址 1

 

 

然后,依然会提示错误。

最终的管理办法是:必须将dll复制到C:\Windows\SysWOW64路径下。

那般IIS工夫找到dll

澳门葡京备用网址 2

C:\Windows\System32\WindowsPowerShell\提醒未能加载,未能加载钦赐的模块。v1.0\Modules
下有ServerManager的东东,不过依旧找不到。

string pwd = "**********";
                string userName = "**********";
                StringBuilder ss = new StringBuilder();
                ss.AppendLine("$password = ConvertTo-SecureString \"" + pwd + "\" -AsPlainText –Force");
                ss.AppendLine("$credential = New-Object  System.Management.Automation.PsCredential(\"" + userName + "\",$password)");
                ss.AppendLine("$cred = Get-Credential -cred $credential");
                 ss.AppendLine("Import-Module MSOnline");
                 //ss.AppendLine("Get-Module");
                ss.AppendLine("Connect-Msolservice -cred $cred");
                 ss.AppendLine("Get-MsolAccountSku");

                using (Runspace runspace1 = RunspaceFactory.CreateRunspace())
                {
                    Collection<PSObject> results = null;
                    try
                    {
                        runspace1.Open();
                        Pipeline pipeline = runspace1.CreatePipeline();
                        pipeline.Commands.AddScript(ss.ToString());

                        results = pipeline.Invoke();
                    }
                    catch (Exception ex)
                    {
                        var ss1 = ex.ToString();
                    }
                    finally
                    {
                        runspace1.Close();
                    }
                }

切实十分新闻如下:

化解这一个标题,必要贰步:

 

关于调用实时(JIT)调节和测试而不是此对话框的详细音讯,
请参见此新闻的最终。

************** 分外文本 **************
System.DllNotFoundException: 无法加载 DLL“Win3二Project一.dll”:
找不到钦赐的模块。 (至极来自 HRESULT:0x8007007E)。
   在 AndroidSkinTool.UnsafeNativeMethods.getKey()
   在 AndroidSkinTool.Forms.FormMain.btnRefresh_Click(Object sender,
EventArgs e) 位置
d:\C#Workspace\SkinToolCode_V6.1\Forms\FormMain.cs:行号 2708
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&
m)
   在
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)

1、Powershell中的实行攻略(Execution Policy)

缘由2个是因为Powershell默许的实施政策是Restricted,即能够运作单条命令,但不能够运作脚本,蕴涵格式和配备文件
(.ps壹xml)、模块脚本文件 (.psm一) 和 Windows PowerShell 配置文件
(.ps壹)、以及.bat文件。
化解方案是把实行政策改得宽松一点,比方RemoteSigned或许Unrestricted。在Powershell中运作以下命令就可以:
Set-ExecutionPolicy RemoteSigned
或 Set-ExecutionPolicy Unrestricted或-ExecutionPolicy RemoteSigned

2、63位操作系统和三十二人操作系统的涉及

CMD
,陆11个人操作系统有八个。二个是:C:\Windows\System32\CMD.exe(这几个是陆拾三位的CMD,固然名字叫System32);三个是C:\Windows\SysWOW64\CMD.exe(那几个是三拾2个人的CMD.SysWOW6四文件夹下的东西是62十个人操作系统为运转3一个人的应用程序而盘算的)。

而是作者编译生成的.exe是三十一位的,通过Setup
Factory的File.Run(…)或然Shell.Execute(…),会调用C:\Windows\SysWOW64\CMD.exe(32位的CMD)。而ServerManager
Module只有64为才有

由此改为编写翻译成61人的就好了。

附(运营的本子):

InstallDotNET.bat

@echo on
cd C:\Windows\System32\WindowsPowerShell\v1.0
powershell -ExecutionPolicy “UnRestricted” -File C:\InstallDotNET.ps1

InstallDotNET.ps1

import-module ServerManager
Add-WindowsFeature NET-Framework
exit

尤其感激(他们的博客末了给了本身化解方案):

 

率先次出现的荒谬:无法将“Connect-Msolservice”项识别为
cmdlet、函数、脚本文件或可运维程序的称呼。请检查名称的拼写,若是蕴涵路线,请确定保障路线正确,然后再试三回。

实质上在应用程序中实现2个很轻便的功用.
在。net程序中C#经过Dllimport格局来调用C++ DLL库.传递1个字符串而已.
而现身System.DllNotFoundException至极的原因主要设有如下多少个难题:

下一场发掘在安装的MSOnline模块暗中同意在61四人PowerShell中得以成功导入,不过在三十一个人的PowerShell
X8六中不可能导入,

澳门葡京备用网址 ,首先必要规定调用C++
DLL是还是不是科学导出.因为能够再付出条件健康运转.可知DLL已经成功导出.成功导入后.供给鲜明在.NET碰着导入的办法是还是不是正确.在导入前须求引用如下库:

报错:

   1:  using System.Runtime.InteropServices;

 

导出方法:

PS C:\WINDOWS\system32>> Import-Module MSOnline
Import-Module :
未能加载钦定的模块“MSOnline”,因为在别的模块目录中都从未有过找到有效模块文件。
所在地点 行:一 字符: 一

   1:  [DllImport("WindowsEntity1.dll",EntryPoint= "TA_Init3",CallingConvention = CallingConvention.StdCall)]

   2:  public static extern int TA_Init3(string IP, Int16 port,ushort SysCode, ushort TerminalNo);
  • Import-Module MSOnline
  • ~~~~~~
  • CategoryInfo : ResourceUnavailable: (MSOnline:String)
    [Import-Module], FileNotFoundException
  • FullyQualifiedErrorId :
    Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

即使导出方式也准确.还提醒如上难点的话.那个时候我们则须要尤其分析调用C++DLL
有未有引用别的库或存在任何重视.采取dependency
worker工具分析当前windowsEntity壹 DLL引用重视项 如下:

原先进范例块只设置到63人下,31位并未安装MSOnline模块;

澳门葡京备用网址 3

此间笔者参考了
这么些文章,不过当中有一部分是不对的:举例”登陆帮手私下认可安装到三十九人的模块库中,六十3位的模块库中并未有”,推测它弄反了。

you see.能够看来日前win3二Project壹.DLL重大有五个依据项
MSVCEscort110.DLL和KEREML3二.DLL.
而MSVCOdyssey110在此时此刻操作系统确实才形成了近期起始运营提醒DLLNotFoundException分外新闻.大家得以再项目Realse目录下加多改DLL或是把改DLL拷贝到System
32下保险系统情况中可知.
发掘DLLNotFoundEXception卓殊则未有了.应用程序正常运转.这里必要小心一点.
在通过.NET 调用C++ DLL 时. 应用会首先在System
32类别情状查找是还是不是具有MSVC本田UR-V1拾.DLL依据项.假如未有则继续在装置目录下搜索.假如两边都未曾找到则会揭破DllNotFoundException极度新闻.
因而轻松方法有两种. 第三方可由此代码在调用注册该DLL音信.
别的能够直接把依赖的MSVCEnclave1十.DLL拷贝到realse目录下就能够.

还有C#暗中认可调用的是30位的PowerShell x8陆,而不是六十六个人的;

其余除了以上境况.还有1种奇特处境是.看运转条件是不是安装了VC Runtime
library. 类似在VS二〇一三 情状下私下认可是安装的.
某些机器未有设置或是采取VC6.0编写翻译的DLL.所感觉了免去打包安装的麻烦.能够通过设置相应VC运维时库可能直接把多少个关照版本运维时的库文件直接放到可试行程序里面实行表露,从而省却安装进度.
那是3个相比直接的消除方案.

此地说明下三个轻巧搞错的门路:

为了保险能够协作3二和6四多个平台.我在调用.NET程序设置编写翻译选项为AnyCpu情势.却开采。net抛出如下相当新闻:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0 下的是32位的Power Shell,

Unhandled Exception:

System.BadImageFormatException: Could not load file or assembly
‘SourceCode.HostClientAPI, Version=4.0.0.0, Culture=neutral,
PublicKeyToken
=16a2c5aaaa1b130d’ or one of its dependencies. An attempt was made to
load a program with an incorrect format.
File name: ‘SourceCode.HostClientAPI, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d’

而C:\Windows\System32\WindowsPowerShell\v1.0放的是64位的Power
Shell;  

相当于您未来观察的System.BadImageFormatException卓殊.针对那个难点.官方MSDN上说的很详细.Visual
Studio的编写翻译选项 build中的platform存在有三个挑选X6四、Any
CPU和x8陆。X八陆代表只幸而三十八个人景况下运转,X6四表示只可以在6三人景况下运作,Any
CPU代表您的次序集能够依据蒙受变化适应三十三个人依然陆拾1人,可是只要您的程序集依赖于三个x八陆选项编写翻译的顺序集类似调用三个win32
C++ DLL,哪么你的先后集只好选拔X八陆实行编写翻译,而不可能接纳Any
CPU编写翻译,假使采用Any
CPU编写翻译.则那一年会抛出System.BadImageFormatException十分消息.

此间很轻松被SysWOW6四和System3二搞晕,SysWOW6四文件夹里面包车型地铁次序类型可参看百度周全

而实在的原由是.若是您利用Anycpu格局打开编写翻译.那么在61位机器私下认可的运行正是63个人的,平时那情景是assembly必要调用2个3二的COM库,只要用x86编写翻译,那么程序就是以三15个人的主次,依据wow6肆来运作的,就能够在陆14人系统上运维。所以,假若assembly须要利用win3二库的话。正确的做法是把编写翻译的选项设置X8六来编写翻译.就能够.唯一点要求.保险调用的C++
DLL编写翻译版本和调用版本一样才是条件所在.那样一来在3贰和陆十个人则不会暴光如上丰富难题.

 

在合法文书档案说了七个奇异情形. 也是值得参考的.

新生自个儿开掘修改项面生成属性的目的平台为x6肆能够成功调用陆十三人的PowerShell;

举个例子您的应用程序使用了 3二 位组件,请保管该应用程序始终选择 312位应用程序的周转形式。

 澳门葡京备用网址 4

假若应用程序项指标“平台指标”属性设置为 AnyCPU,则编写翻译后的应用程序在 陆拾一个人或 32 位方式中均可运转。如若采取 6四 位应用程序运转情势,则实时 (JIT)
编写翻译器便会生成 6肆 位本机代码。借使应用程序信赖于某些 三十二个人托管组件或非托管组件,则在 陆拾3位方式中不恐怕加载该零件。若要改良此难题,请将项目标“平台指标”属性设置为
x86,然后再度编写翻译。

 

管教未使用应用另外 .NET Framework 版本创立的机件。

此间本身分析:

要是运用 .NET Framework 一.0 或 .NET Framework 一.一开拓的应用程序或机件尝试加载使用 .NET Framework 二.0 SP一或越来越高版本开垦的程序集,恐怕应用 .NET Framework 二.0 SP1 或 .NET
Framework 三.五 开采的应用程序尝试加载使用 .NET Framework 四开辟的程序集,便会吸引此格外。 BadImageFormatException
格外大概会告诉看成编写翻译时不当,或在运维时恐怕会引发该尤其。有关示例,请参见
BadImageFormatException 类

如若您的门类设置了首推311人依旧引用任何三11位的dll  就能自行调用3三个人的power
Shell,能够因此设置目的平台为x6四测试有没有依赖33个人程序集,假设依附会报

参考资料:

 

至于疑难非凡解答:system.BadImageFormatExcetpio.

未能加载文件或程序集“ConnectionOffice3陆伍”或它的某二个依附项。试图加载格式不得法的次第。

说明: 实践当前
Web
请求时期,出现未经管理的丰硕。请检查货仓追踪信息,以询问有关该错误以及代码中产生错误的出处的详细音信。 

非凡详细音讯: System.BadImageFormatException:
未能加载文件或程序集“ConnectionOffice3陆五”或它的某一个借助项。试图加载格式不科学的顺序。

 

 

 

 

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website