0

これは本当に奇妙です。これをwpfアプリケーションで実行すると、次のようになります。

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

エラーは発生しません。

asp.netアプリケーションで実行したいと思います。そこで実行すると、次のようになります。 ここに画像の説明を入力してください

ビルドエラーは発生せず、実行時にエラーが発生することに注意してください。SKYPE4COMLib.SkypeクラスはSkypeによって提供され、ここからダウンロードできます。wpfアプリケーションを使用している場合でも、そのクラスからオブジェクトをインスタンス化できる理由がわかりません。

私が試したこと:(asp.netアプリケーションからそのライブラリを使用したいことを思い出してください)

1)ソリューションにwpfアプリケーションを追加します。次に、私のaspアプリケーションからそのプロジェクトを参照します。同じエラーが発生します。

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

3)ターゲットフレームワークを.NetFramewrok4クライアントプロファイルから別のフレームワークに変更します。これにより、クラスをインスタンス化できたが、メソッドを呼び出すことができなかったという問題が解決しました。

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

4

2 に答える 2

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 には main メソッドはありません。私が知っているものではありません。そのため、asp.net では、AspCompat 属性を true に設定する必要がありました。

したがって、私のasp.net aspxページは次のようになります。

    <%@ Page AspCompat="true" Language="C#" .... etc
于 2012-01-17T15:31:28.153 に答える