Oppure

Loading
12/01/23 11:20
fosforo
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
aaa
12/01/23 14:40
Thejuster
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.
mire.forumfree.it/ - Mire Engine
C# UI Designer
16/01/23 7:15
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.
aaa
16/01/23 12:58
Carlo
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
16/01/23 13:33
Thejuster
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

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


poi ho letto sotto

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à


 <ItemGroup>
    <Content Include="lgoo.png">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>



credo basterebbe fare


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


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

learn.microsoft.com/en-us/cpp/build/…

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

Edit:

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


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 16/01/23 14:30
mire.forumfree.it/ - Mire Engine
C# UI Designer
18/01/23 11:05
fosforo
Verissimo.
La domanda era confusionaria.

Grazie per la risposta.
aaa