我有一个控制台应用程序和一个wpf application.
SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();)。
给出一个:InvalidCastExeption,声明:
无法将类型为“System.__ComObject”的COM对象转换为接口类型“SKYPE4COMLib.skype”。此操作失败,因为对IID '{B1878BFE-53D3-402E-8C86-190B19AF70D5}‘接口的COM组件的QueryInterface调用失败:不支持此类接口( HRESULT: 0x80004002 (E_NOINTERFACE)例外)。
但是,当我在我的wpf应用程序中运行同一行代码时,我不会得到异常。为什么!?
在skype更新之前,我的控制台应用程序运行得很好。我卸载skype,再次安装它,以试图解决问题,但这并没有帮助。
发布于 2012-01-17 03:50:26
经过长时间的尝试,我决定通过添加必要的引用和类来使我的wpf应用程序成为控制台应用程序。然后我比较了一下,我注意到如果我加上:
[System.STAThreadAttribute()]它的主要工作方法!
因此,我现在的主要方法应该是:
使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Text;
namespace ConsoleApplication3
{
class Program
{
[System.STAThreadAttribute()]
static void Main(string[] args)
{
SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();
}
}
}在asp.net上没有一个主要的方法。但据我所知。因此,在asp.net中,我必须添加等于true的AspCompat属性。
因此,我的asp.net aspx页面现在看起来如下:
<%@ Page AspCompat="true" Language="C#" .... etc发布于 2012-01-16 18:47:02
不要为您的控制台应用程序使用客户端配置文件,将其设置为完整的.Net版本。
通过进入项目属性-> Application -> Target (下拉) ->将其设置为.Net Framework4(如果它是正在运行的.net的那个版本)。
https://stackoverflow.com/questions/8884768
复制相似问题