私はのComVisibleクラス作成しました:のSilverlight 4とCOM相互運用機能
[Guid("73a3f91f-baa9-46ab-94b8-e526c22054a4"), ComVisible(true)]
public interface ITest
{
void Foo();
}
[Guid("99f72d92-b302-4fde-89bb-2dac899f5a48"), ComVisible(true)]
public class Class1 : ITest
{
public void Foo() { }
}
をし、レジストリに
regasm ComClassTest.dll /tlb:ComClassTest.tlb
経由で登録。 私は外のブラウザ、このような高い信頼アプリケーションの私のSilverlight 4でそれを呼び出すようにしようとすると:私は例外を取得
var foo = AutomationFactory.CreateObject("ComClassTest.Class1");
「{のSystem.Exception:指定されたProgIDのためのオブジェクトインスタンスの作成に失敗しました"
ただし、例外なしでAutomationFactory.CreateObject( "Word.Application")を呼び出し、通常のC#-consoleアプリケーションでActivator.CreateInstance(Type.GetTypeFromProgID( "ComClassTest.Class1"))を呼び出すことができますif ComClassTest.dllをbinディレクトリにコピーします。
私は綿糸を何ですか?
を私はすべてのご提案を行ってきたが、例外はまだ同じです。上で述べたように、私はアセンブリをC#-consoleアプリケーションから呼び出すことができます。それはSilverlightの問題であることを証明していませんか? –
@Papa:C#コンソールアプリケーションは、Silverlightコードが使用しようとしている 'IDispatch' OLEオートメーションインターフェイスを使用していません。私の答えは、VBScriptの1行で成功していますか? – AnthonyWJones
同じ問題があるIm。あなたのVBスクリプトをテスト(ビン/デバッグ/ DLLプロジェクトの)実行されますが、それは私を与える:行1、char 1:システムが指定されたファイルを見つけることができません。 Papaによって記述されたActivatorを使ったC#コンソールアプリはうまく動作します。私はアセンブリレベルでComVisibleを持っています。 – gauteh