在我的C#程序中,我使用的是Microsoft.Office.Interop.Excel。有了这个,我正在读取和写入数据到excel文件。在一台机器上,即使它有Office 2007,也有看到以下异常,在GetComponentPath()方法调用时引发。
未处理的异常:System.MissingMethodException:找不到方法:"System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.GUID)"。
这是我的代码:
public static string GetComponentPath(OfficeComponent _component)
{
string toReturn = string.Empty;
string _key = string.Empty;
try
{
Microsoft.Office.Interop.Excel.Application _excelApp = null;
_excelApp = new Microsoft.Office.Interop.Excel.Application();
if (_excelApp != null)
{
Console.WriteLine("Excel is installed");
}
else
{
Console.WriteLine("Excel not found.");
}
}
catch (Exception ex)
{
Console.WriteLine("Error n" + ex.ToString());
}
return toReturn;
}
public enum OfficeComponent
{
Word,
Excel,
PowerPoint,
Outlook
}
问题:您已经在本地机器中使用 heigher 版本的 .NET Framework
开发了您的应用程序,并在具有较低版本的 .NET Framework
的远程 PC 上运行相同的应用程序。
注意:如果您的目标是将应用程序定位为在.NET Framework
版本上运行Heigher
则它不会在较低版本上运行。
解决方案 :您需要将其定位到远程PC上可用的.NET Framework
较低版本才能在远程PC上运行。
步骤1:右键单击project
- 选择properties
第 2 步:将Target Framework
从 .NET Framework x.x
更改为 .NET Framework x.y
。
注意:其中x.x
是heigh,x.y
是远程PC上可用的较低版本或任何较低版本。