Knihovna jen z v aktuálním projektu použitého kódu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Knihovna jen z v aktuálním projektu použitého kódu – .NET – Fórum – Programujte.comKnihovna jen z v aktuálním projektu použitého kódu – .NET – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Kartmen
~ Anonymní uživatel
50 příspěvků
30. 9. 2020   #1
-
0
-

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

Nahlásit jako SPAM
IP: 88.103.206.–
JerryM0
Stálý člen
1. 10. 2020   #2
-
0
-

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

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:f170:3938:96a:5f87...–
Kartmen
~ Anonymní uživatel
50 příspěvků
2. 10. 2020   #3
-
0
-

#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ů.

Nahlásit jako SPAM
IP: 88.103.206.–
JerryM0
Stálý člen
2. 10. 2020   #4
-
0
-

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ší"  ?

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
2. 10. 2020   #5
-
+1
-
Zajímavé
Kit +

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

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Stálý člen
2. 10. 2020   #6
-
0
-

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

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
Kartmen
~ Anonymní uživatel
50 příspěvků
2. 10. 2020   #7
-
0
-

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

Nahlásit jako SPAM
IP: 88.103.206.–
JerryM0
Stálý člen
2. 10. 2020   #8
-
0
-

#1 Kartmen
možná když budeš hledat na netu tak něco najdeš třeba tohle synchnonisuje položky v SolExp:

https://marketplace.visualstudio.com/items?itemName=cpmcgrath.SolutionExplorerTools

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
2. 10. 2020   #9
-
+1
-
Zajímavé
Kit +

#6 JerryM
Už vidím, jak mám v jednom souboru naplácaných 5 tříd každou po 20 - 50 řádcích. Můžu mít několik tříd, několik souborů a při tom jeden namespace.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
2. 10. 2020   #10
-
0
-

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

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Stálý člen
2. 10. 2020   #11
-
0
-

#8 JerryM
každej si to dělá jak mu to vyhovuje ...

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
Kartmen
~ Anonymní uživatel
50 příspěvků
2. 10. 2020   #12
-
0
-

Ještě jeden důvod mě napadá, občas se stává, že se zákazníkovi dává i zdrojový kód.

Díky za pomoc.

Nahlásit jako SPAM
IP: 88.103.206.–
Kit+14
Guru
2. 10. 2020   #13
-
0
-

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

Nahlásit jako SPAM
IP: 37.188.241.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JerryM0
Stálý člen
2. 10. 2020   #14
-
0
-

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ží ...

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
JerryM0
Stálý člen
2. 10. 2020   #15
-
0
-

#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

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
JerryM0
Stálý člen
2. 10. 2020   #16
-
0
-

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.

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
JerryM0
Stálý člen
2. 10. 2020   #17
-
0
-

tohle se používá v C++

https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=vs-2019

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
JerryM0
Stálý člen
2. 10. 2020   #18
-
0
-

#1 Kartmen
tady je ještě jeden zajímavej dotaz

https://social.msdn.microsoft.com/Forums/vstudio/en-US/815c3ad2-eb53-43b9-a3e4-8b9d11558b48/what-is-the-equivalent-of-includein-c-in-c?forum=csharpgeneral

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:2576:4d61:1e27:e708...–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 104 hostů

Podobná vlákna

Knihovna — založil Anonymní uživatel

Knihovna GD — založil Michal115

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý