2009-06-21 12 views
1

In .net Aktivierung kann man eine AddIn in einem neuen AppDomain erstellen. Die Erstellung neuer AppDomains ist nichts Neues, und mit einer AppDomainSetup-Klasse können Sie alle Startparameter (z. B. wo die app.config gefunden wird) der neu erstellten AppDomain angeben. Wenn jedoch eine AddInToken mit einer neuen AddInProcess Aktivieren (die angibt, dass die AddIn sollte innerhalb eines völlig neuen Prozeß instanziiert werden), muss man nicht den direkten Zugriff auf den AppDomainSetup Parameter haben, die verwendet werden, um die Anwendungsdomäne innerhalb des neuen Prozesses zu erstellen.Steuerung AppDomainSetup wenn AddInToken innerhalb AddInProcess

Gibt es eine Möglichkeit, dies zu tun? Ich muss wirklich in der Lage sein, meine neuen AddIns zu zwingen, neue app.config Einstellungen und verschiedene andere Anpassungen auf der AppDomain zu verwenden.

Vielen Dank für jede Hilfe hier ...

Antwort

2
var addins = AddInStore.FindAddIns(typeof(AddInHostView), addInRoot); 
foreach (var addin in addins) 
{ 
    var addinInstance = addin.Activate<AddInHostView>(AddInSecurityLevel.FullTrust); 

    // snip 
    // do stuff 
    // snip 
} 

Mit diesem Code (Ich verstehe Fulltrust schlecht, aber für meine Anwendung benötigt wird) Ich bin in der Lage einen separaten app.config angeben (mit dem Namen des wie die Addin-Assembly) in jedem Verzeichnis.

\AddIns 
\AddIn1 
    AddIn1.dll 
    AddIn1.dll.config 
+0

Das stimmt. Die Überladung von Activate, die Sie verwenden, besteht darin, im aktuellen Prozess eine neue AppDomain zu aktivieren. Um einen neuen Prozess zu erstellen, können Sie 'var addinInstance = addin.Activate (new AddInProcess(), AddInSecurityLevel.FullTrust);' aufrufen. Ich weiß, dass die Frage ein altes ist, aber es könnte jedem nützlich sein, der System.AddIn verwendet. –