不能在wpf应用程序以外的项目中使用dll

时间:2012-01-16 21:49:32

标签: c# dll reference skype4com

这真的很奇怪。如果我在wpf应用程序中运行它:

SKYPE4COMLib.Skype mySkype = new SKYPE4COMLib.Skype();

我没有错误。

我想在asp.net应用程序中运行它。当我在那里运行它时,我得到: enter image description here

请注意,我没有遇到任何构建错误,并且在运行时出现错误。 SKYPE4COMLib.Skype类由Skype提供,可以从here下载。我不明白为什么我能够从该类实例化一个对象,就像我使用的是一个wpf appliation。

我尝试过的事情:(回想一下,我想从我的asp.net应用程序中使用该库)

1)在我的解决方案中添加wpf应用程序。然后从我的asp应用程序引用该项目。我犯了同样的错误。

2)尝试创建Web服务并在Web服务中实例化该类。这不起作用。

3)将目标框架从.Net Framewrok 4 Client Profile更改为不同的框架。这解决了我能够实例化该类的问题,但后来我无法调用这些方法。

我很难理解为什么我能够从类中实例化一个对象,如果我在一个wpf应用程序中而不是在.net应用程序甚至是一个控制台应用程序中!我似乎好像skype试图故意阻止它。

2 个答案:

答案 0 :(得分:0)

也许运行Web服务的用户帐户(aspnet)没有足够的权限来执行此操作? 看看here,看看模仿是否适合你。

答案 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