Laden...

Nur die benutzten Teile einer dll verwenden/weitergeben

Erstellt von sevenofnine vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.302 Views
S
sevenofnine Themenstarter:in
45 Beiträge seit 2008
vor 11 Jahren
Nur die benutzten Teile einer dll verwenden/weitergeben

Hallo,

ich sammele diverse allgemein gültige Basisklassen, Schnittstellen, Tools und Extensions in einer WerkzeugAssembly. Diese binde ich dann in unterschiedliche (Kunden)Projekte ein. Wie kann ich erreichen, dass nur die Teile in der dll sichtbar sind, die ich für das jeweilige Projekt benötige. Ich könnte mir eine projektspezifische Proxy Assembly vorstellen, die die verschlüsselte Werkzeugkiste jeweils für das Projekt freischaltet, aber das ist mir zu großer Aufwand, gehts einfacher?

Gruß Gerhard

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo Gerhard

Willst du damit vermeiden, dass die anderen Teile sicher nicht benutzt werden?
Welchen Grund hat das genau, ich sehe denn Sinn nicht ganz?

DLLs trennen, also die Abhängigkeiten lösen und dann jeweils nur die benötigten DLLs einbinden.

Werkzeug.Data
Werkzeug.Linq
...

Oder, nur so als Idee, das internalsvisibleto Attribut, aber damit kannst du auch nur bspw. 2 Projekte nur einen Teil sehen lassen und 2 Projekte alles sehen lassen.
Also nicht was du suchst.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

S
sevenofnine Themenstarter:in
45 Beiträge seit 2008
vor 11 Jahren

Hallo Peter,

ich möchte vermeiden dass ein Kunde die von mir getesteten und für gut befundenen Programmcodes einfach verwenden kann, die ich in einem anderen Projekt verwende, also z.B. Erweiterung der Stringklasse

Der Schutz muss nicht sicher sein, es reicht mir das z.B. nach using WerkzeugAssembly "Hallo".MeineErweiterung() im Intellisene nicht erscheint.

Die Idee mit dem Attribut internalsvisibleto werde ich mir mal durch den Kopf gehen lassen. Im Attribut kann ich mehere Assemblies angeben oder?

Aber vielleicht muss man doch die Assemblies auftrennen. In einigen Projekten gibts aber schon diverse Dlls in der Solution, so dass ich für diese Grundfunktionalitäten nicht auch noch mehrere in eventuell verschieden Versionen ausliefern möchte, aber vielleicht dient es ja auch der Übersicht.
By the way, ist es möglich einen Namespace in unterscheidlichen Assemblies auszuliefern

Gruss Gerhard

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo Gerhard

Ok, über internal und das Attribut könntest du zumindest angeben, das alles was internal ist in deinem Projekt X in allen Projekten ausgeblendet wird (Komplett), ausser in den Projekten die du als VisibleTo angibst. Die haben vollen Zugriff darauf.

Könnte also was für dich sein, indem du die Erweiterungen von dir nur in deinen eigenen Assemblies verwenden kannst, die das dürfen.

Auftrennen, dafür würde ich dir sowieso raten.
So verringerst du auch die Abhängigkeiten und sorgst so vor.

Du kannst natürlich die gleichen Namespaces in unterschiedlichen Assemblies haben.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

S
sevenofnine Themenstarter:in
45 Beiträge seit 2008
vor 11 Jahren

Hallo Peter,

danke werd ich so testen.

Gruß Gerhard

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo sevenofnine,

also grundsätzlich wird es Tools geben, die das gewünschte erledigen. Ich kenne sowas noch aus meinen seligen native-C-Zeiten. Ich glaube, damals gab es sogar manchmal entsprechende Compiler- bzw. Linker-Optionen, die aus Bibliotheken nur die tatsächlichen benutzen Funktionen in die ausführbaren Dateien übernommen haben.

Gründe dafür gibt es mehrere, nicht nur den Wunsch, keinen unnötigen/unbenutzen Code an den Kunden auszuliefern, sondern auch schlicht die (Download-)Größe bzw. den (Haupt-)Speicherverbrauch zu reduzieren.

Konkrete Tools für C#./NET kann ich dir allerdings leider nicht nennen. Aber vielleicht kennt irgendjemand anderes welche.

herbivore

J
641 Beiträge seit 2007
vor 11 Jahren

Gründe dafür gibt es mehrere, nicht nur den Wunsch, keinen unnötigen/unbenutzen Code an den Kunden auszuliefern, sondern auch schlicht die (Download-)Größe bzw. den (Haupt-)Speicherverbrauch zu reduzieren.

Aber das sollte doch heutzutage wirklich kein Problem mehr sein... 😉

cSharp Projekte : https://github.com/jogibear9988

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo jogibear9988,

mindestens der erste genannte Grund ist relativ zeitlos. Und auch wenn die anderen Gründe vielleicht kein ernsthaftes Problem mehr darstellen, kann der Wunsch danach weiterhin bestehen. Letztlich muss das jeder für sich selbst entscheiden. Wer solche Tools kennt, sollte sie also ruhig nennen.

herbivore