Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VS2019 C# selezionare folder di Default durante la compilazione
Forum - C# / VB.NET - VS2019 C# selezionare folder di Default durante la compilazione

Avatar
fosforo (Normal User)
Expert


Messaggi: 383
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:20
Giovedì, 12/01/2023
Ciao
Uso VS2019 e Blend per creare i miei programmi.
Volevo sapere se possibili creare delle cartelle e indirizzare i file importati durante la compilazione.

Mi spiego meglio:
Creo una cartella Images e, quando carico una immagine nelle Form, nelle propietà di VS dico di copiare sempre il file.
In questo momento me li copia nella Root del Progetto.
Invece vorrei che li copiasse nella cartella Images creata precedentemente.

Grazie

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2197
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:40
Giovedì, 12/01/2023
Ciao fosforo.
Penso proprio di no.
Perché Visual Studio è stato progettato proprio così
E indicizza le risorse in quel metodo.

Puoi eseguire operazioni diverse in fase di build o post-build.
Ma non operazioni su dove colloare immagini quando si importa.
Posso anche sbagliarmi ma penso che nessun tool faccia qualcosa del genere.

In pre o post build puoi modificare il file di progetto non (sln) ma csproj

puoi aggiungere esempio

<ItemGroup>
<CustomBuild Include="Immagine.png">
    <Command>copy %(Identity) $(OutDir)%(Identity)</Command>
    <Outputs>$(OutDir)%(Identity)</Outputs>
  </CustomBuild>
</ItemGroup>

Ma non puoi dire a Visual Studio in quale cartella caricare le immagini durante l'importazione.
Che poi esiste il file di risorse che è estremamente comodo e utile proprio per questo.


PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 383
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 8:15
Lunedì, 16/01/2023
Grazie Thejuster

Cavolo...
Un grande programma come VS che non permette una cosa cosi utile.
Poter decidere, in fase di compilazione, di copiare i file, ma non poter gestirli correttamente.:-|
Mi immagino con grandi progetti, con tante risorse.

Grazie lo stesso per l'aiuto.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1097
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:58
Lunedì, 16/01/2023
Ciao Fosforo, non sono intervenuto perché non so rispondere alla tua domanda, ma mi sorge un dubbio sulla praticità di quello che vuoi fare.

Se vuoi che i file finiscano in una cartella da te creata avrai un percorso assoluto cha va bene solo nel tuo PC, che vantaggio ha?
Se si vogliono i file in un percorso specifico è sempre meglio usare solo l'ultima parte del percoso prendendo come cartella assoluta solo quella che contiene l'eseguibile e a seguire tutte le sottocartelle che vuoi.
Un'altro approcio è chiedere al sistema dove si trovano le cartelle Documenti, Immagini, Video e ProgramData dell'utente che sta usando il tuo programma ed usare quelle, magari creandoci dentro delle sottocartelle.

Se quello che ho esposto è scontato, significa che non ho capito cosa vuoi ottenere. :-?


in programmazione tutto è permesso
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2197
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:33
Lunedì, 16/01/2023
Testo quotato

Postato originariamente da fosforo:

Grazie Thejuster

Cavolo...
Un grande programma come VS che non permette una cosa cosi utile.
Poter decidere, in fase di compilazione, di copiare i file, ma non poter gestirli correttamente.:-|
Mi immagino con grandi progetti, con tante risorse.

Grazie lo stesso per l'aiuto.



Aspetta.
In fase di compilazione è un discorso.
Mentre come avevi detto nel post precedente è un'altra cosa o la domanda era abbastanza confusionaria

Testo quotato


volevo sapere se possibili creare delle cartelle e indirizzare i file importati durante la compilazione.



poi ho letto sotto

Testo quotato


Mi spiego meglio:
Creo una cartella Images e, quando carico una immagine nelle Form, nelle propietà di VS dico di copiare sempre il file.
In questo momento me li copia nella Root del Progetto.
Invece vorrei che li copiasse nella cartella Images creata precedentemente.




Scritto così si capisce:
Quando importo un file immagine nella form, me la copia nella root del progetto invece vorrei che le copiasse nella cartella images creata precedente.

Se ho sbagliato a capire allora chiedo scusa, ma da come ho letto penso si intendevi a questo.

Altrimenti, ti basta modificare col blocco notes il file di progetto.
non la soluzione (*.sln) ma *.csproj

E qui c'è un pò da lavorare anche perché non conosco bene tutte le macro di visual studio.
Ma tipo se carichi un immagine esempio ti apparirà

Codice sorgente - presumibilmente Plain Text

  1. <ItemGroup>
  2.     <Content Include="lgoo.png">
  3.       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  4.     </Content>
  5.   </ItemGroup>



credo basterebbe fare

Codice sorgente - presumibilmente Plain Text

  1. <Target Name="AfterBuild">
  2.     <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(RootContent)" SkipUnchangedFiles="true" />  
  3. </Target>



Ovviamente puoi anche creare delle macro.
Puoi anche seguire una guida di microsoft

https://learn.microsoft.com/en-us/cpp/build/how-to-add-cust ...

Oppure cosa più facile,
Andare sulle proprietà del progetto, Scheda Build Events
al comando Pre-Build Event aggiungere:

Edit:

Codice sorgente - presumibilmente Plain Text

  1. copy "$(ProjectDir)prova" "$(TargetDir)destinazione\"



dove c'è scritto prova, è la cartella nella root del progetto
quindi diciamo dove hai le immagini da ricopiare all'output.

la destinazione è dove al build va a posizionare le immagini.
quindi dovresti fare credo

Codice sorgente - presumibilmente Plain Text

  1. copy "$(ProjectDir)Images" "$(TargetDir)Cartella-Destinazione\"





Penso di averla scritta correttamente, ma fai delle prove per capirne meglio il funzionamento.
Sopratutto per le macro.

Ultima modifica effettuata da Thejuster il 16/01/2023 alle 15:30


PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 383
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:05
Mercoledì, 18/01/2023
Verissimo.
La domanda era confusionaria.

Grazie per la risposta.

PM Quote