2009-06-30 11 views
3

Ich schreibe Programme, die intern von unserer Firma verwendet werden. Ich habe mehrere Support-DLLs erstellt, die ich in vielen Projekten referenziere. (ein generischer Datenzugriffshelfer zum Beispiel) Anstatt eine Kopie von "datatools.dll" in jedem Programmverzeichnis zu haben (scheint Standardverhalten zu sein) möchte ich eine Kopie haben, auf die von vielen Programmen verwiesen werden kann. Ein bisschen wie mein eigenes System32-Verzeichnis.Verweis auf freigegebene DLLs in VS-Bereitstellungsprojekt

Ich habe einen "Reference path" zu meinem Projekt hinzugefügt. Ich kompiliere das Projekt dann das Bereitstellungsprojekt. Der Installer funktioniert gut. Die freigegebenen DLLs befinden sich in meinem Referenzpfad. Aber wenn ich das Programm ausführen, bekomme ich den Fehler "System.IO.FileNotFoundException: Konnte Datei oder Assembly nicht laden datatools.dll, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null 'oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden." Wenn ich datatools.dll in den gleichen Ordner wie die EXE verschiebe, läuft das Programm ohne Probleme.

Kann ich einen freigegebenen Speicherort für freigegebene DLLs erstellen und verwenden? Oder ist das nur eine schlechte Idee?

Antwort

3

Sie unterzeichnen können (VS2k8 verwenden, suchen in dem Projekteigenschafts Registerkarten) ‚em und legt sie in dem GAC

+0

Vielen Dank für die schnelle Antwort. Ich verwende VS2k8. Ich schaute auf die Zeichen-Option, die du und Yuliy erwähnt hast, aber fürchte, es ist über meinem Kopf. Ich lebe einfach mit mehreren Kopien auf den Computern meiner Benutzer. – mohnston

+0

eine idee ob ich darauf verzichten kann oder nicht ??? Ich meine, ich möchte, dass diese gemeinsamen DLLs im isolierten Ordner und nicht in meinem Anwendungsordner sein sollten. Einige von dlls sind nicht unsere eigenen dlls und deshalb ist das Senden ein Problem. – Denish

+0

lassen Sie mich bitte mohnston wissen, ob Sie eine endgültige Lösung haben oder nicht – Denish

2

Wenn Sie .NET verwenden, die typische Vorgehensweise für diese Art von Problem ist, diejenigen zu implementieren freigegebene Assemblys an den GAC (Global Assembly Cache), idealerweise als eigenes Bereitstellungsprojekt.

1

Klingt, als ob Sie eine Multiprojektlösung haben. Stellen Sie sicher, dass alle Projekte, die auf die DataTools.dll-Assembly verweisen, auf den richtigen (neuen) Speicherort verweisen.

Abhängig von Ihrer IDE müssen Sie vielleicht etwas Ungewöhnliches versuchen, wie die alte Referenz zu entfernen, sie aufzubauen (und zu beobachten, wie sie abstürzt) und sie dann an der neuen Position wieder hinzuzufügen.