2012-01-16 1 views
0

Это действительно странно. Если я запускаю это в приложении wpf:Невозможно использовать dll в проектах, отличных от wpf applicaion

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

У меня нет ошибок.

Я хочу запустить это в asp.net-приложении. когда я его запускаю, я получаю: enter image description here

Отметьте, что я не получаю ошибок сборки, и ошибка возникает во время выполнения. Класс SKYPE4COMLib.Skype предоставляется Skype и может быть загружен с here. Я не понимаю, почему я могу создать экземпляр объекта из этого класса, только если я использую приложение wpf.

вещи я пытался: (напомним, я хочу использовать эту библиотеку из моего приложения ASP.NET)

1) Добавление приложения WPF к моему решению. Затем ссылаясь на этот проект из моего приложения asp. Я получаю ту же ошибку.

2) Пытался создать веб-сервис и создать экземпляр класса в веб-службе. Это не работает.

3) Измените целевую структуру с .Net Framewrok 4 на профиль клиента. Это решило проблему, я смог создать экземпляр класса, но тогда я не могу назвать методы.

Мне сложно понять, почему я могу создать экземпляр объекта из класса, если я в приложении wpf, но не в приложении .net или даже в консольном приложении! Кажется, что skype пытается заблокировать это специально.

ответ

0

После долгих часов попыток я решил, где собираюсь сделать приложение 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 мне пришлось добавить атрибут AspCompat равным true.

поэтому мои asp.net ASPX страницы теперь выглядеть следующим образом:

<%@ Page AspCompat="true" Language="C#" .... etc 
0

Возможно, учетная запись пользователя, на которой выполняется ваш веб-сервис (aspnet), не имеет достаточных привилегий для этого? Взгляните here и посмотрите, работает ли для вас олицетворение.

+0

Я скомпилировать его затем запустить его в качестве администратора, и это не сработало. Думаю, мне нужно будет сделать приложение wpf одним из них, добавив необходимые рефери. Может быть, когда я это сделаю, это перестанет работать! –