Ahoj, je to asi dotaz spíš na Visual studio. Nevíte jestli existuje typ projektu, nebo nějaký způsob, jak by šlo používat něco jako referenční projekt, ze kterého by se po použití nějaké jeho části v "normálním" projektu automaticky překopírovalo vše co je potřeba do projektu, na kterém právě dělám? Něco čím bych se vyhnul ručnímu kopírování, nebo naopak zbytečné používání knihovny, ze které je použito pár řádků kódu. Nebo kdyby šlo vytvořit knihovnu, kde bude jen to co se v projektu opravdu používá.
Fórum › .NET
Knihovna jen z v aktuálním projektu použitého kódu
tvemu dotazu asi nikdo moc nerozumí ..
pokud chceš, vytvoř si v C# samostatný soubor ve tvém projektu jako class.cs a do něj dej všechno co budeš používat i v následujících projektech a tento soubor pak do nových projektů vždy vlož ...
další možností udělat si z toho "potřebného" kodu knihovnu typu .dll ale to nese dost problémů pro někoho kdo je začátečník ..
#2 JerryM
Mam jeden velký hotový projekt, ve kterém je dejme tomu několik tisíc tříd.
Pak mam druhý projekt, na které aktuálně dělam a občas nějakou třídu, metodu, nebo cokoliv z toho velkého projektu použiju a chtěl bych, aby to z toho velkého projektu vycuclo všechen kód, který je nezbytný a jen z toho kódu aby to udělalo knihovnu. Ten druhý, pracovní projekt je něco co se stále mění, podle toho na čem právě dělám, takže pokaždé použiju z velkého projektu jiné části. Normální je udělat z velkého projektu knihovnu, která bude mít několik mega a neřešit, že aktuálně jsem z ní použil 10 řádků kódu. Já se ptam, jestli existuje něco, co by na základě použití dokázalo udělat knihovnu jen z těch 10 řádků.
obávám se že nic "automatického" není .. tohle si budeš muset udělat sám ...
jinak projekt kde je několik tisíc tříd :) je docela zajímavý protože ... jak to říct.. ona sama doba kompilace když má program řekněme 1 nebo 2 miliony řádků ručně psaného kodu v C# je docela dlouhá ...já si to představuju tak, že v okně SolutionExplorer máš 7000 souborů typu ".cs" což je samo o sobě skutečně exclusivní
otázka je: děláš to správně ? rozdělil jsi projekt na správný počet logických a fyzických modulů ???
máš v každé jedné třídě jen 10-20 řádek kodu ? nebo je tvuj projekt "optimalizovanější" ?
Řídím se pravidlem jedna třída = jeden soubor. Pak stačí do projektu přidávat ty třídy (a tím pádem soubory) které jsou potřeba.
Ještě mne napadá udělat šablonu projektu. Překladač optimalizuje - použije v exe jen to, co bylo potřeba. Akorát pak zdrojový kód obsahuje hromadu balastu.
Řešit, že knihovna má pár MB a využije se z ní zlomek by mne netrápilo. Co tě nutí usilovně řešit úsporu místa?
hu
mechanismus "jedna třída" = "jeden soubor" jsem kdysi dávno viděl v knihovně "BlaisePascal" pro BorlandPascal 6.0 a později 7.0 ... někdy na konci 80 let .. moc dobrotu to nedělalo a knihovna to taky marketingově nevyhrála a brzy zanikla ..... jenom to bylo nepřehledý, mohem lepší je dělat knihovny ve smyslu .NET a funkčně podobné třídy grupovat do "Namespaceů" :)
jenom abyste měli představu tak např. 1.28 mil řádek ručně psanýho kodu z jednoho projektu v MS VS 2019 C++ se překompiluje do cca 100MB výsledného exe souboru ......takže to je v dnešní době sranda...
#5 hlucheucho
To ruční přidávání už dá práci a co teprve řešit nějaké chainy, kdy třída závisí na jiných a ty na jiných... a ani celé třídy nebudou většinou použité. Pokud mají spoustu metod a všeho možného, tak se při použití třídy využívá jen něco málo.
Ber to jako filozofickou otázku, ale začal jsem to řešit, protože mam svou knihovnu, která stále roste a přitom z ní často používam jen zlomek. Jasně šla by rozložit na několik souborů a to už zase není tak pohodlné, stále přemýšlet co je v jaké knihovně. O místo až tak nejde, i když je trochu prasárna z programu co může mít 1MB udělat 100 jen proto, že tam připlácnu spoustu knihoven.
Něco takového by také bylo řešení, aby si sám kompilátor vytahnul jen co potřebuje.
Stejně bych zvolil přístup jako má MySQL connector. Je to samostatný projekt, který vložíš do řešení. Nejdříve zkompiluješ tento projekt a pak celé řešení. Výsledkem je knihovna a její použití. Výsledná dll měla necelého 0,5MB, nakolik byla optimalizovaná pro konkrétní projekt netuším, neřešil jsem to. Můžeš si to vyzkoušet, prostě udělat pár řešení s různým využitím knihovny a dívat se na výsledek.
Naproti tomu dll může být i výhodou pokud je v počítači více aplikací využívající stejnou dll. Pak stačí aby dll byla v počítači instalována pouze jednou.
Myslím, že vynaložené úsilí nebude adekvátní výsledku ani v případě, že se ti podaří udělat co chceš.
hu
#6 JerryM
Mechanismus jedna třída -> jeden soubor je dnes de facto standardem. Stejně tak jeden namespace -> jeden adresář. Jedna třída 2-4 atributy a cca 5 metod, jedna metoda do cca 20 řádek. V takovém projektu se pak dá vyznat.
je možný, že si budeš muset nějakej administrátorskej program napsat sám
zkus se zeptat na "MSDN Social Forum" ... tam máš možnost konfrontovat požadavek s názory programátorů z celého světa ... nebo na StackOverFlow ...
zajímalo by mě jak to děláš, když potřebuješ postihnout nějak vzájemný propojení těch 7000 samostatných tříd v 7000 samostatných souborech .. např. v C++ na to makro IF DEFINE a každý soubor/ třída má svuj vlastní identifikátor a pokud na něj narazíš v preprocesoru tak už se pak nekompiluje určitá část .. ale tohle si musíš napsat sám a vložit to do kompilačního řetězce v C++ ... což jde ... ale jestli to jde v C# to nevim ...
čili v C++ má firma napsaný administrátor projektů a ten pak generuje sestavu/kod pro preprocesor C++ a podle toho se projekt složí ...
#14 JerryM
C# má direktivy preprocesoru taktéž:
https://docs.microsoft.com/cs-cz/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-define
tady máš zajímavou odpověď
https://stackoverflow.com/questions/3842590/how-do-i-set-a-conditional-compile-variable
a ještě neco tady
https://answers.unity.com/questions/29196/if-not-defined-in-c-scripting.html
jinak obecně MS nedoporučuje zasahovat do souboru .cproj protože by se mohlo všechno postrat a navíc liší se u každé verze MSVS.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vice projektu a vzajemne pouzivani kodu — založil Roman
Jak na export kódu do txt (jen deklarace)? — založil bear.king
Zjištění použitého fontu + individualní (browser) nastavení charsetu — založil Petroff
Knihovna GD — založil Michal115
Moderátoři diskuze