Macro/variabile di Ambiente .sln e .vcproj file per Visual studio

Ho due problemi simili:

a) ho una soluzione che comprende vari progetti, e voglio essere in grado di passare con facilità la posizione del progetto mediante l’impostazione di alcuni variabile di ambiente/macro.
Come esempio di questo progetto può essere situato in
\SolutionDir\Dir1\ o \SolutionDir\Dir2\
Quindi, voglio specificare che deve essere situato in \SolutionDir\$(Var) e basta impostare la variabile.

C’è qualche generazione in Visual Studio modo per farlo?

So attualmente, ci sono due soluzioni – modifica .sln file manuale/a livello di programmazione per il progetto e impostare il percorso corretto.

Non ero in grado di utilizzare la variabile di ambiente .sln file.

b) ho un progetto, che comprende le risorse.rc .h) i file. Voglio essere in grado di impostare la propria posizione attraverso altra variabile d’ambiente o di una macro.

Qualcosa come \ProjectDir\$(Var2)\resource.rc

Ho trovato alcuni promettenti info su fogli di proprietà, ma Visual studio non espandere le macro quando sto usando il File di tag nel .vcproj.

Grazie per tutte le idee su come risolvere questo problema.

Riguarda,
Victor

  • interessante. Ma io non riesco a capire perché si vuole fare questo. Probabilmente c’è un altro modo di risolvere il problema che si sta cercando di affrontare.
  • Voglio impostare il progetto per essere facilmente commutabile tra versioni di marca di prodotto per i vari OEM.
InformationsquelleAutor | 2009-05-08

 

5 Replies
  1. 20

    Penso di avere lo stesso obiettivo che è: voglio utilizzare le variabili di ambiente per individuare alcuni progetti in una soluzione di file (.sln) e di utilizzare alcune variabili di ambiente per individuare alcuni file all’interno dei miei progetti.

    Ho trovato un modo per farlo e per me funziona bene (con Visual Studio 2005):
    – modificare il .sln file con un editor di testo e utilizzare le variabili di ambiente con la seguente sintassi %MyEnvironmentVariable%
    – modificare il .vcproj file e sostituire il percorso del file desiderati con alcune variabili, con la seguente sintassi $(MyEnvironmentVariable).

    Speranza che aiuta…
    Cyrille

    • Questo è proprio quello che stavo cercando, non lo sapevo .sln utilizza %VAR% sintassi, sto usando $(VAR) che funziona in .scproj. Thx!
    • Essere consapevoli del fatto che l’introduzione di variabili in un .sln file significa che essi non possono essere utilizzati con MSBuild. Vedere connect.microsoft.com/VisualStudio/feedback/details/690318/…
    • Il link via @cowlinator è morto, ma il problema persiste, vedere questo problema
  2. 2

    Il modo migliore per ottenere ciò che si descrive in b) è quello di utilizzare fogli di proprietà. Controllare anche questo molto domanda simile.

    Ho trovato alcuni promettenti informazioni su
    fogli di proprietà, ma Visual studio
    non espandere le macro quando sto usando
    File tag .vcproj.

    Non sono sicuro di quale versione di VS si utilizza. VS2008 consente di definire, per esempio, una directory come questo: “$(OpenCVInclude)\cxcore\include”. Io lo uso per tutto il tempo. OpenCVInclude è una macro definita in un foglio di proprietà.

    Come per la domanda a), penso che non ci sia modo di “pulito” per fare quello che vuoi. Come alternativa si può configuration manager:

    • Includere tutti i progetti nella soluzione.
    • Nome del progetto in modo diverso, per esempio, sulla base dell’OEM.
    • Per ogni progetto definire release e debug configurazioni nella soluzione
    • In “Build->Gestione Configurazione” È possibile selezionare o deselezionare la “creazione” di colonna per ogni configurazione. Controllare “costruire” per il progetto.
  3. 1

    Io non sono sicuro se si sta creando solo il C++ progetti o se anche la costruzione di C#\progetti VB, ma una delle grandi cose su Visual Studio è che tutti i progetti sono in realtà solo MSBuild progetti. Se si modifica un progetto in un editor di testo, vedrete che alla fine del progetto, non importa .obiettivi di file. Se è rintracciare e ritrovare seguire le importazioni troverete che quasi tutti i VS progetti di importazione di Microsoft.Comune.Obiettivi. Microsoft.Comune.Obiettivi importazioni Personalizzato.Prima.Microsoft.Comune.Obiettivi. Utilizzando questa importazione è possibile importare i propri obiettivi di file con le vostre azioni personalizzate.

    Io, per esempio, abbiamo un file di destinazione che ha una proprietà definita in tutti i progetti in una soluzione e un custom post di costruire un evento che i processi alla fine di ogni progetto di costruzione.

    Utilizza questo metodo di estensione e la creazione di configurazioni personalizzate in soluzione, oltre a standard di rilascio\debug, si dovrebbe essere in grado di creare come complesso di una configurazione di costruzione di cui hai bisogno.

  4. 0

    (a)
    Cyrille dà una soluzione decente per quello che hai chiesto. Un altro modo è quello di tenere le impostazioni modificabili in un unico luogo. Nota che questo non funziona per non msbuild file come *.sln e *.vcproj (fino a VS 2010).

    File di progetto:


    $(ChangeableDir)\pippo.cs

    Comune.obiettivi:

    ChangeThis

    Tuttavia, non credo che questo è un ottimo modo per fare le cose. Se le differenze tra ciò che si sta costruendo sono grandi pezzi di funzionalità, si dovrebbe considerare la creazione di una succursale nell’origine del sistema di controllo. OTOH, se le differenze sono minime — eg hardcoded stringhe, quindi questo porta alla tua seconda domanda…

    (b)
    Il tipo di gestione delle risorse si descrive è essenzialmente lo stesso problema affrontato da persone localizzare il loro progetto in diverse lingue. Per fortuna, il supporto è integrato in Visual Studio dal 2005. Check out precedenti domande come: La localizzazione in Visual Studio 2008

Lascia un commento