在两个应用程序中我添加了skype4com.dll引用
代码: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,再次安装它以尝试解决问题,但这没有帮助。
答案 0 :(得分:7)
不要为您的控制台应用使用客户端配置文件,将其设置为完整的.Net版本。
您可以通过进入项目属性来更改它 - >申请 - >目标框架(下拉) - >将其设置为.Net Framework 4(如果它是您正在运行的.net版本)
答案 1 :(得分:0)
经过长时间的尝试后,我决定通过添加必要的引用和类来使我的wpf应用程序成为控制台应用程序。然后我比较,我注意到,如果我添加:
[System.STAThreadAttribute()]
它的主要方法!!!!!
因此我的主要方法现在应该如下:
使用System; 使用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