プラグインを使用する C# アプリケーションを構築しています。アプリケーションは、プラグインがユーザーのマシン上で何をしても実行しないこと、およびアプリケーション自体よりも権限が少ないことをユーザーに保証する必要があります (たとえば、アプリケーションは独自のログ ファイルにアクセスできますが、プラグインはアクセスできません)。 .
3つの選択肢を考えました。
System.AddIn を使用します。私はこの代替手段を最初に試しました。これは非常に強力だったからですが、何かを変更するたびに、7 つの異なるプロジェクトで同じコードを 7 回変更する必要があることに本当にがっかりしています。その上、単純な Hello World アプリケーションであっても解決すべき問題は膨大です。
System.Activator.CreateInstance(assemblyName, typeName) を使用します。これは、以前のバージョンのアプリケーションで使用したものです。アクセス許可を制限する方法が提供されていないため、二度と使用できません。
System.Activator.CreateInstance(AppDomain ドメイン、[...]) を使用します。それが私が今実装しようとしているものですが、それを行う唯一の方法は、使用されるすべてのクラスのシリアル化を必要とする ObjectHandle を通過することのようです。プラグインには WPF UserControls が含まれていますが、これはシリアル化できません。
UserControls またはその他のシリアル化できないオブジェクトを含むプラグインを作成し、それらのプラグインをカスタム PermissionSet で実行する方法はありますか?