Frage

Meine ASP.NET-Anwendung lädt eine Baugruppe und erstellt eine Instanz der Klasse von einem Objekt innerhalb dieser Gruppe. Die Anordnung selbst hat einen Verweis auf eine DLL aufgerufen „Aspose.Cells.dll“, die es ohne Probleme zugreifen kann und auf dem gleichen Weg wie die Baugruppendatei selbst befinden. Allerdings, wenn ich einen Methodenaufruf an eine seiner Methoden machen bekomme ich diesen Fehler:

  

konnte nicht geladen werden Datei oder Assembly 'Aspose.Cells, Version = 4.1.2.0, Culture = neutral, PublicKeyToken = 9a40d5a4b59e5256' oder eine ihrer Abhängigkeiten.

Ich vermute, dass ich brauche, um meine ASP.NET-Anwendung Referenz diese DLL als auch zu machen, aber alles, was ich bisher versagt hat versucht haben. Der Assembly-DLL, die geladen wird, nicht innerhalb der Wurzel der Web-Anwendung befand und ich hoffe, dass es nicht sein muss.

Ich kann die Montage wie folgt laden:

Assembly asm = Assembly.LoadFile(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll");

Aber ich kann es nicht so verwendet werden:

AppDomain newDomain = AppDomain.CreateDomain("testAspose");
Assembly asm = newDomain.Load(System.IO.File.ReadAllBytes(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll"));

Gibt es einen besseren Weg, es zu tun?

Update:

Vielen Dank für Ihre Antworten.

Ich habe vergessen zu erwähnen, dass ich nicht die Baugruppen in den Papierkorb-Ordner oder dem GAC kopieren kann, weil ich es als Plugin-System arbeiten möchten, wo Baugruppen leicht durch Ändern Sie den Pfad zu Baugruppen in einer Konfigurationsdatei ersetzt werden kann und nicht mit zu manuell kopieren Dateien in das Hauptprojekt.

Allerdings ist das AssemblyResolve Ereignis scheint interessant und ich werde es später versuchen.

War es hilfreich?

Lösung

Es gibt ein paar Möglichkeiten, dies zu tun. Eine Möglichkeit ist in dem Microsoft Knowledge Base-Artikel beschrieben „ Wie eine Assembly zur Laufzeit laden, die in einem Ordner befinden, der nicht der Binärordner der Anwendung ist “. Es bietet ein ziemlich gutes Schritt-für-Schritt-Verfahren, wie dies zu tun.

Andere Tipps

Sie können die abhängigen Assembly in den Ordner Bin kopieren oder im GAC installieren.

Ich denke, Sie Montage Verweise auf die web.config hinzufügen, in der Abschnitt, etwa so:

<compilation debug="true">
  <assemblies>
     <add assembly="Aspose.Cells, Version=4.1.2.0, Culture=neutral,  PublicKeyToken=9a40d5a4b59e5256"/>
  </assemblies>
</compilation>

Ich bin nicht ganz sicher, dass dies funktionieren wird, und es kann einen entsprechenden Eintrag zu web.config in einem Knoten unter erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top