从 .NET 3.5 更改为 4.5.1 时无法加载文件或程序集 'Interop.Microsoft.Office.Core, Version=2.4.0.0, ...'
Could not load file or assembly 'Interop.Microsoft.Office.Core, Version=2.4.0.0, ...' when changing from .NET 3.5 to 4.5.1
我正在将我的 WinForms 应用程序从 .NET 3.5 升级到 4.5.1。
3.5 应用程序工作正常。升级到 .NET 4.5.1 后,我开始收到以下异常:
System.IO.FileNotFoundException: Could not load file or assembly 'Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null'
FusionLog 说:
=== Pre-bind state information ===
LOG: DisplayName = Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/SampleApp/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : Interop.Microsoft.Office.Interop.Excel, Version=1.6.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\SampleApp\bin\Debug\SampleApp.vshost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\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:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core.DLL.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core/Interop.Microsoft.Office.Core.DLL.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core.EXE.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core/Interop.Microsoft.Office.Core.EXE.
奇怪的是,除了 1 个引用外,我的引用看起来都一样:在 .NET 3.5 项目中,有一个对类型 COM
和版本 1.6.0.0
的 Microsoft.Office.Interop.Excel
的引用(它来自 GAC)我无法在 .NET 4.5.1 项目上重新创建它,因为在 COM 对象引用中没有这样的东西,而且我在 .NET 引用中找不到这个版本。
不知道这是否是造成问题的原因。
关于如何让它与 .NET 4.5.1 一起工作有什么想法吗?
您使用什么 .Net 框架版本并不重要 运行。看来您需要重新添加参考。查看 Visual Studio 的“添加引用”对话框中的 COM 选项卡。互操作程序集将自动为您生成。
特别注意刚刚添加的引用的Embedd Interop Types属性:
无论如何,Could not load file or assembly Microsoft.Office.Interop.Excel 论坛帖子描述了完全相同的错误。
我解决了将 "Copy Local" 和 "Embed Interop Types" 设置为 true 的问题。
(我安装了Office 2013和365)
我正在将我的 WinForms 应用程序从 .NET 3.5 升级到 4.5.1。
3.5 应用程序工作正常。升级到 .NET 4.5.1 后,我开始收到以下异常:
System.IO.FileNotFoundException: Could not load file or assembly 'Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null'
FusionLog 说:
=== Pre-bind state information ===
LOG: DisplayName = Interop.Microsoft.Office.Core, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/SampleApp/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : Interop.Microsoft.Office.Interop.Excel, Version=1.6.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\SampleApp\bin\Debug\SampleApp.vshost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\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:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core.DLL.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core/Interop.Microsoft.Office.Core.DLL.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core.EXE.
LOG: Attempting download of new URL file:///C:/SampleApp/bin/Debug/Interop.Microsoft.Office.Core/Interop.Microsoft.Office.Core.EXE.
奇怪的是,除了 1 个引用外,我的引用看起来都一样:在 .NET 3.5 项目中,有一个对类型 COM
和版本 1.6.0.0
的 Microsoft.Office.Interop.Excel
的引用(它来自 GAC)我无法在 .NET 4.5.1 项目上重新创建它,因为在 COM 对象引用中没有这样的东西,而且我在 .NET 引用中找不到这个版本。
不知道这是否是造成问题的原因。
关于如何让它与 .NET 4.5.1 一起工作有什么想法吗?
您使用什么 .Net 框架版本并不重要 运行。看来您需要重新添加参考。查看 Visual Studio 的“添加引用”对话框中的 COM 选项卡。互操作程序集将自动为您生成。
特别注意刚刚添加的引用的Embedd Interop Types属性:
无论如何,Could not load file or assembly Microsoft.Office.Interop.Excel 论坛帖子描述了完全相同的错误。
我解决了将 "Copy Local" 和 "Embed Interop Types" 设置为 true 的问题。
(我安装了Office 2013和365)