2012-01-16 5 views
0

これは本当に奇妙です。これをwpfアプリケーションで実行した場合:wpf以外のプロジェクトでDLLを使用できません

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

私はこのエラーは発生しません。

私はそれをasp.netアプリケーションで実行したいと思います。私がそれを実行すると、私は得る: enter image description here

私はビルドエラーが発生せず、実行時にエラーが発生することに注意してください。 SKYPE4COMLib.SkypeクラスはSkypeによって提供され、hereからダウンロードできます。なぜ私はwpf appliationを使用している場合だけ、そのクラスからオブジェクトをインスタンス化できるのか分かりません。私が試してみました

物事は:私の解決策へのWPFアプリケーションを追加)

1(リコール私は私のasp.netアプリケーションからそのライブラリを使用する場合)。その後、私のASPアプリケーションからそのプロジェクトを参照してください。私は同じエラーを取得します。

2)Webサービスを作成し、そのWebサービスでクラスをインスタンス化しようとしました。それはeatherでは動作しません。

3)対象フレームワークを.Net Framewrok 4 Client Profileから異なるものに変更します。これは、クラスをインスタンス化することができたが、メソッドを呼び出すことができないという問題を解決しました。

私は、wpfアプリケーションではなく、.netアプリケーションやコンソールアプリケーションでも、クラスからオブジェクトをインスタンス化できる理由を理解するのに苦労しています。私はスカイプが意図的にそれをブロックしようとしているようです。

答えて

0

私はいつも私のwpfアプリケーションを必要な参照とクラスを追加してコンソールアプリケーションにするつもりだと決めました。私が比較して、私が追加した場合、私が追加した場合:

[System.STAThreadAttribute()] 

メインメソッドにそれが動作する!!!!!

この結果、私の主な方法は以下のようになります:

using System; using System.Collections.Generic; using System.Linq; using 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に追加する必要がありました。私は管理者として実行し、それが動作しませんでしたし、それをコンパイルし

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

ウェブサービス(aspnet)が実行されるユーザーアカウントに十分な特権がないのでしょうか? hereを見て、なりすましが効果的かどうかを確認してください。

+0

ので、私のasp.netのaspxページは、今のように見えます。私は必要な参照を追加して、私のwpfアプリケーションを.netのものにしなければならないと思う。多分私はそれが働くのを止めるでしょう! –

関連する問題