Avatar billede gulbaek Nybegynder
17. juli 2007 - 13:06 Der er 7 kommentarer

Lave nye cs. filer når der buildes

Vil lige høre om det er muligt at danne nye filer når man builder et projekt.

Kunne nemlig godt tænke mig at hvis jeg placerede en ny wave fil i en bestemt mappe så blev der automatisk lavet en tilhørende .cs fil.

Således at hvis jeg ligger en Eksplosion.wave fil ind i min soundEffect mappe, når jeg så lavede en build blev der lavet en Eksplosion.cs fil med de nødvendige metoder for at afspille lyden. Denne Eksplosion.cs fil skulle så blive tilføjet til mit projekt.

Har kigget lidt på pre-build event command line, men mangler inspiration til hvordan det hele skulle gøres.
Avatar billede windcape Praktikant
17. juli 2007 - 13:09 #1
Hvorfor ikke skrive en factory til at håntere det istedet ?
Avatar billede arne_v Ekspert
17. juli 2007 - 13:30 #2
Det er nemt med et custom nant/msbuild script.

Arne
Avatar billede gulbaek Nybegynder
17. juli 2007 - 13:42 #3
windcape har læst lidt om factory pattern, men det giver desværre ikke helt den ønskede funktionalitet. Det jeg vil have er muligheden for at f.eks. Eksplosion.cs bliver en del at mit projekt på godt og ondt. F.eks. hvis jeg får det laves sådan at min Eksplosion.cs bliver fjernet hvis jeg fjerner min Eksplosion.wave fil(Kræver selvfølgelig en Build), Det vil resultere i compile fejl, som nemt kan rettes, men hvis jeg bruger en factory ved jeg ikke lige hvordan jeg skulle kunne opdage det før run time.

Arne kan du komme med lidt mere info til hvordan det skal gøres i msbuild script?
Sidder nemlig og overvejer at lave et ny commando promt program og kalde det fra pre-event
Avatar billede arne_v Ekspert
23. juli 2007 - 04:20 #4
Det er vel lige ud af landevejen.

Et Exec tag som kører et eller andet der genererer den .cs fil og så et Csc tag der
compiler den.
Avatar billede sherlock Nybegynder
31. august 2007 - 10:57 #5
Jeg er jo nødt til at spørge, for at blive klogere:)
Hvilken problemstilling vil du løse ved at have en kode-fil til hver lyd-fil?
Avatar billede gulbaek Nybegynder
31. august 2007 - 15:49 #6
Det er strengt taget heller ikke nødvendig med en kode-fil til hver lyd. Det eneste jeg ønsker at opnår er mulighede for at opdage om en Wave fil eksistere på compiler tidspunktet.

Nedestående XNA eksemple vil f.eks. fint compile, men resultere i en fejl så snart det bliver afviklet.

audioEngine = new AudioEngine("Content\\Audio\\MyGameAudio.xgs");
waveBank = new WaveBank(audioEngine, "Content\\Audio\\Wave Bank.xwb");
soundBank = new SoundBank(audioEngine, "Content\\Audio\\Sound Bank.xsb");
backgroundMusic = soundBank.GetCue("LydDerIkkeFindes");

backgroundMusic.Play();

Hvis jeg derimod lavede et lille program som scannede mine lyd filer igennem og oprettede klasser til hver enkelt. Kunne jeg i stedet for benytte mig af følgende kode.

Eksplosion.Play();

Hvis jeg så fjerner Eksplosion.wave, så vil mit program i pre-event build opdage det og fjerne Eksplosion.cs, hvilket vil resultere i compiler fejl ved alle de steder hvor jeg kalder Eksplosion.Play()og det er lige præcis den funktionalitet jeg ønsker at opnå.
Avatar billede arne_v Ekspert
01. september 2007 - 03:28 #7
Men er det ikke mere relevant med et runtime test om ressourcerne er der runtime end
et compile time test om de er der ved compile ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester