Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[VS.2005]Include code uit andere projecten, zonder reference

Pagina: 1
Acties:

Verwijderd

Topicstarter
We hebben een solution met een aantal projecten en daar wil ik een project aan toevoegen.
Dit nieuwe project gaat een conversie doen van de oude data en wordt een aparte exe.

Veel van de handelingen die in het nieuwe project moeten worden uitgevoerd, wordt ook al in de andere projecten gedaan. Ik wil dan ook die code gaan gebruiken dmv project referencing.
Omdat ik hier nog weinig van weet heb ik eerst een nieuwe solution gemaakt met twee projecten. In project1 maak ik een reference naar project2 en ik roep in project1 een classe aan uit project2.
Dit werkt prima.
Alleen wordt project2.exe gekopieerd naar de bin van project1. Dat wil ik niet. Straks in de 'grote' solution wil ik niet alle exe's en dll's gekopieerd hebben.
Als ik dan in de reference Copy Local op False zet, wordt de exe niet gekopieerd maar dan krijg ik een runtime error dat hij project2.exe niet kan vinden.

Wat ik eigenlijk wil is dat tijdens de build van project1 de gebruikte code uit project2 wordt meegebuild (include) in de exe, zodat ik geen extra exe's of dll's nodig heb.
Kan dat en zo ja hoe dan?
Uiteraard ben ik al een poosje aan het zoeken op oa. Google maar ik gebruik waarschijnlijk niet de juiste zoektermen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:52
> DTE

Waarom heb je die circular reference nodig ? Circulaire referenties duiden imho meestal op een gebrekkig design / ontwerp / indeling van je project-structuur.

Als je echt code wilt gaan meebuilden (zonder een reference te leggen), dan zal je die code volgens mij aan je project moeten toevoegen. Maar, dan zit je met gedupliceerde code.

Kan je gewoon de gesharede code niet in een aparte DLL onderbrengen die project1 en project2 dan gebruiken / referencen ?

[ Voor 144% gewijzigd door whoami op 13-09-2007 09:53 ]

https://fgheysels.github.io/


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Waarschijnlijk ben je op zoek naar IL Merge. Met IL Merge kun je meerdere assemblies (de dll's uit je bin folder) samenvoegen tot 1 dll.

Een betere oplossing is om de code die beide programma's delen onder te brengen in een zogenaamde class library waar beide projecten een referentie naar maken. Een nadeel van IL Merge is dat je daarna niet meer ClickOnce kunt gebruiken om programma's up to date te houden.

Ik ben ook eigenlijk best wel benieuwd naar de reden waarom het eind resultaat alleen maar uit 1 bestand mag bestaan.

If it isn't broken, fix it until it is..


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Een derde oplossing is minder overzichtelijk, maar hij werkt wel. Als je gebruik maakt van SVN kun je een via een symlinks (een virtuele kopie naar een ander bestand of directory) de betreffende bestanden 'toevoegen' aan het andere project. De symlinks zul je echter wel via een OS moeten maken welke dit ondersteunen (Netware, OS X, Linux, Unix, xxxBSD). Als je vervolgens het project onder windows weer uit SVN trekt dan zal SVN automatisch de virtuele kopie als een echt bestand in de checkout directory zetten. Op het moment dat je dan wijzigingen maakt aan dat bestand, dan wordt deze in beide projecten (na de commit) doorgevoerd.

Omdat onze teststraat (uit 2000) bestaat uit voornamelijk nunit (testing framework) en nant (automatisch build framework) tools bestaat (onder linux) en wij alle projecten (PHP, ASP en .NET) in SVN bewaren, is dit voor 'ons' een vrij eenvoudige oplossing.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Bedankt allemaal.
Ik was ook weer verder aan het zoeken en lezen en inmiddels is het me wat duidelijker.
Ik dacht dat als ik project1 build en project2.exe wordt erbij gezet dat ik dan problemen krijg met versies. Daarom wilde ik het in 1 bestand hebben.
Inmiddels ben ik er achter dat als ik de solution build ipv de afzondelijke projects de nieuwste versies worden gebruikt en het dus geen kwaad kan om meerdere bestanden te hebben.
Ik blijf dus de reference naar het project gebruiken en zet Copy Local weer op True.