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
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
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
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
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
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
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