无法在控制台应用程序中引用dll,但我可以在wpf中引用
本文关键字:引用 我可以 wpf dll 应用程序 控制台 | 更新日期: 2023-09-27 18:20:23
- 我有一个控制台应用程序和一个wpf应用程序
-
在这两个应用程序上,我都添加了skype4com.dll引用
-
代码:
SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();
给出一个:InvalidCastExeption
声明:
无法强制转换类型为"System"的COM对象__ComObject"到接口类型"SKYPE4COMLib.Skype"。此操作失败,因为对IID为"{B1878BFE-53D3-402E-8C86-190B19AF70D5}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT中的异常:0x80004002(E_NOINTERFACE))。
但是当我在wpf应用程序中运行同一行代码时,我不会出现异常。为什么?
在skype更新之前,我的控制台应用程序运行得很好。我卸载了skype,再次安装它,试图解决问题,但这并没有帮助。
不要为Console应用程序使用客户端配置文件,请将其设置为完整的.Net版本。
您可以通过进入项目属性->应用程序->目标框架(下拉菜单)->将其设置为.Net Framework 4(如果是您正在运行的.Net版本)
经过长时间的尝试,我决定在哪里添加必要的引用和类,使我的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