无法加载文件或程序集(.NET,Visual Studio 2010)
问题描述:
我收到一个令我困惑的错误。我有一个.NET应用程序,它引用了一个用于自动化第三方程序的OCX文件。当我从Visual Studio中运行它时,这些应用程序完美运行,但是当我将它打包到MSI文件并将其安装到测试机器上时,它会失败地显示“无法加载文件或程序集”Interop.OISSERVERLib,...“。无法加载文件或程序集(.NET,Visual Studio 2010)
有没有人对我怎样才能解决这个问题有什么建议
System.InvalidOperationException was unhandled
Message=An error occurred creating the form. See Exception.InnerException for details. The error is: Could not load file or assembly 'Interop.OISSERVERLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Source=SLSClaimantWorkbook
StackTrace:
at SLSClaimantWorkbook.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 190
at SLSClaimantWorkbook.My.MyProject.MyForms.get_SLSClaimantWorkbook()
at SLSClaimantWorkbook.My.MyApplication.OnCreateMainForm() in C:\Documents and Settings\C15919\My Documents\Visual Studio 2005\Claimant Workbook\Claimant Workbook\My Project\Application.Designer.vb:line 35
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at SLSClaimantWorkbook.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
InnerException: System.IO.FileNotFoundException
Message=Could not load file or assembly 'Interop.OISSERVERLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Source=SLSClaimantWorkbook
FileName=Interop.OISSERVERLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
FusionLog=WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
StackTrace:
at SLSClaimantWorkbook.SLSClaimantWorkbook..ctor()
InnerException:
编辑: 集绑定信息:
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: c:\WINNT\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable C:\Program Files\SLS\Claimant Workbook\SLSClaimantWorkbook.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = INTERNAL\C15919
LOG: DisplayName = Interop.OISSERVERLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/SLS/Claimant Workbook/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = SLSClaimantWorkbook.exe
Calling assembly : SLSClaimantWorkbook, Version=0.9.31.11788, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files\SLS\Claimant Workbook\SLSClaimantWorkbook.exe.config
LOG: Using machine configuration file from c:\WINNT\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Program Files/SLS/Claimant Workbook/Interop.OISSERVERLib.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/SLS/Claimant Workbook/Interop.OISSERVERLib/Interop.OISSERVERLib.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/SLS/Claimant Workbook/Interop.OISSERVERLib.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/SLS/Claimant Workbook/Interop.OISSERVERLib/Interop.OISSERVERLib.EXE.
LOG: All probing URLs attempted and failed.
答
这个错误是因为我有限的了解的Visual Studio处理OCX文件。当我广告时将该文件作为程序中的参考,程序创建了“Interop.OISSERVERLIB.dll”,程序使用该文件,而不是原始的OCX。通过浏览到“bin \ Debug”文件夹,我能够将DLL添加到安装文件,并且它现在可以正常工作!
谢谢大家指点我正确的方向!
+2
只是为了将来找到这些,还应该参考项目参考中的Interop dll。确保'Copy Local'设置为true以在构建/发布/部署时输出 – Basic
你能发布完整的错误信息吗? –
您忘记部署互操作库,必需。接下来可能的故障模式是忘记在目标机器上部署和注册OCX文件。 –
山药,我添加了完整的错误文本。 –