問題タブ [maf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - AddIn (MAF) : 別のプロセスで実行中
私はWPFホストアプリを持っており、アドインは以下に説明するようにUIを返すWPFでもあります:
[リンク] http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.110%29.aspx
WPF アドインを外部プロセスとしてアクティブ化することさえ可能かどうか知りたいです。WPF アドインは AppDomain 分離でのみ使用されると考えられているようですが、これは私たちのアプリには十分ではありません。アドインが何らかの理由でクラッシュした場合、ホストが常にクラッシュすることは許されません。ロードされたアドインがクラッシュした場合でも、ホスト アプリが実行されるようにします。
以下を使用してこれを達成できることを私は知っていSystem.AddIn
ます:
しかしSystem.AddIn
、アドインに WPF UI コンポーネントがあるからではなく、WPF アドインがあります。
次のように、新しいアプリ ドメインで WPFAddIn をアクティブ化できます。
WPF アドインでこの状況を処理するための最新情報を入手できませんでした。別のプロセスで WPF AddIn をアクティブにする方法、またはホストで未処理の例外をキャッチする方法の例はありますか。基本的に、アドインがクラッシュしたときにホストが死ぬのを許すことはできません。次のリンクをたどりましたが、スレッドが非常に古く、現在の情報がないことが判明しました。
ホストで例外を処理できれば、それも問題ありません。私の問題を説明しましょう:
私はWPFホスト「A」を持っています。WPFアドイン「B」があります。
ホスト「A」にアドイン「B」をロードしました。アドイン「B」にはクリックボタンがあります。ユーザーがボタンをクリックすると、アドイン「B」でイベントが発生します。そのイベントでは、利用可能な try キャッチはなく、そのイベントからいくつかの null 例外がスローされます。この未処理の例外により、ホスト (WPF アプリも) がクラッシュしました。
ホスト「A」でこの例外を処理し、アドイン「B」をアンロードして、クラッシュすることなくホストを続行できるソリューションを探しています。
AddInSecurityLevel.FullTrust
と同様に アドインを試しましたAddInSecurityLevel.Internet
。
ヒントや例は役に立ちます。
c# - コンテナーを使用して .net 3.5 アプリケーション内に .net 4.0 アプリケーションをロードすることは可能ですか?
MEF や MAF などのコンテナーを使用して、.net 3.5 アプリケーション内に .net 4.0 アプリケーションをロードすることは可能ですか?
下位互換性のみが .net でサポートされているという事実を認識していますが、コンテナに違いはありますか?
c# - MAF AddInProcess および Telerik RadRibbonView を使用したプラグインで例外が発生する
ホストから分離して WPF プラグインをロードできるようにするために、System.AddIn (MAF) を使用して API を設計しました。
現在、API は AppDomains を使用して分離を提供していますが、AppDomains に関連する制限のため、代わりに AddInProcesses を使用するように実装を切り替えようとしています。次のプロジェクトをテンプレートとして使用しています: http://www.cnblogs.com/Files/sheva/Process.zip
私の最初の実装は問題なく動作しているようで、分離境界を越えて WPF 要素を読み込むことができますが、複雑な Telerik コントロールを読み込もうとすると問題が見つかりました。RadRibbonView、次の例外が発生します:
An exception of type 'System.Runtime.Remoting.RemotingException' occurred in mscorlib.dll but was not handled in user code
Additional information: Failed to read from an IPC Port: The pipe has been ended.
c# - 未処理の例外の「遅い」処理C#
プラグインの拡張性を提供するために、プロジェクトで MEF を使用しました。これはうまく機能しますが、プラグイン アセンブリをメイン アプリから分離する必要があることに気付いたので、少なくとも、プラグインがクラッシュしてもメイン アプリはクラッシュしません。
残念ながら、これは予想よりも複雑なようです。最適なソリューションを提供するには、MAF と MEF の組み合わせが必要です。
しかし、リソースと時間が不足しているため、少なくとも当面は満足のいく回避策で十分です。
詳細なログ記録のために、すでにAppDomain.CurrentDomain.UnhandledException
イベントを使用しています。AppDomain
これで、例外の原因も検出できることに気付きました。この時点でこれらの未処理の例外を実際に処理する方法はありますか?この方法で、外部アセンブリで例外が発生したかどうかを条件付きで確認し、発生した場合は無視して、メイン アプリが影響を受けないようにすることができます。
OFC、提案された代替アプローチも高く評価されます。
c# - 実行中のプロセス名の更新
MAFを使用してアプリケーションのアドインをロードし、アドインを独自のプロセスにロードする Token.Activate オーバーロードを活用しています。AddInProcess.exe
これにより、システム内のアドインごとに1 つ読み込まれます。このプロセスが自分のアプリケーションと対応するアドインから来ていることをタスクマネージャーに反映させるためにできることはありますか?
私は PID を持っているので、プロセス名を更新できる Win32 API を呼び出すことができるかどうかを判断しようとしていましたが、私が読んだすべては、プロセス名を更新する方法がないことを示しているようです。私は何かを逃しましたか?
注: アプリケーションにロードされたアドインのリストを維持しているので、アプリケーションでこれらすべてを表示できますが、タスク マネージャーにもう少し多くの情報を表示させるとよいでしょう。
c# - アウト プロセス (new AddInProcess()) で実行される WinForm-AddIn をホストしてアクティブ化する方法は?
事実
AddIns
MAF を使用して (レガシー WinForm exe の) アウト プロセスを管理するホスト アプリケーションを作成しようとしています (例: Add-ins and Extensibility )
アクティベーションは、次のAddIn
ようにプロセス外で行われます。
プラグインを追跡し、TooStripMenu
. ホスト アプリケーションのToolStripMenuitem.Click
イベントは、コントラクトPlugIn.ShowMainDialog()
の一部である - メソッドを起動します。AddIn
X プロジェクト (WinForm アプリケーション) は、以下AddIn
を含むクラスにコントラクトを実装します。
上記のホスト アプリケーションを実行するAddIn
X Form
と、プロセスがハングし、何が問題なのかを突き止めるのが非常に難しくなります :-(
質問
そこに含まれているnew AddInProcess()
ホストに使用する実用的なサンプルはありますか?AddIns
WinForms
c# - MAF。アドイン側から呼び出す
プラグインを提供するアプリケーションを開発しています。私は目的のために Managed Add-In Framework を使用しています。アドインからホストのメソッドを呼び出す方法はありますか?
.net - MAFでプラグインをアクティブ化するときにユーザー資格証明/ユーザー・アカウントを渡す
MAF を使用して外部プラグインをロードし、それらを新しいプロセスとしてアクティブ化します。ホスト プロセスは、ユーザー アカウント svc-host で実行される Windows サービスです。
別のプロセスでプラグインをアクティブ化する可能性はありますが、別のユーザー アカウント (svc-mypluginuser) で実行されていますか?
使用例: プラグインは独自のデータベースに接続します。データベース セキュリティは AD ベースです。各プラグインが独自のデータベースにのみアクセスできるようにする必要があります。
使用するコード:
AddInProcess には、ユーザー資格情報を渡す方法がないようです。