2014-05-06 10 views
5

C'è una incoerenza nel valore di configurazione verbosità tra Solution Explorer in VS.NET e il valore proiettato all'interno del file .csproj. In Solution Explorer a .config o nel file delle dipendenze sono disponibili più opzioni nella proprietà Copy To Output Directory che influiscono sulle sue caratteristiche di build e distribuzione.Perché la verbosità per la selezione "Copia nella directory di output" cambia tra le posizioni?

Nel menu a discesa Copy To Output Directory ho selezionato l'opzione per un file .config: Copy if newer. Tuttavia nel file .csproj è impostato come PreserveNewest come si vede qui sotto:

<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 

Suppongo che la conclusione può essere fatta che dal momento che è (2) luoghi diversi terminologia essere diverso senso. Ho anche potuto vedere dove gli "spazi" non sarebbero consentiti nel file XML, ma poi potrei ancora aspettarmi di vedere qualcosa di simile al seguente.

<CopyToOutputDirectory>CopyIfNewer</CopyToOutputDirectory> 

C'è da qualche parte che questo è definito nel MSDN e come mappa questi 'nomi friendly' per il loro valore configurato fisico all'interno del file .csproj?

risposta

5

Penso che non ci sia un posto dove sia possibile trovare la mappatura come questa. Tuttavia, Automation and Extensibility Reference può cancellare alcune cose.

Ad esempio, si può vedere che l'interfaccia FileProperties2 ha proprietà CopyToOutputDirectory e che la proprietà accetta __COPYTOOUTPUTSTATE valori di enumerazione:

  • COPYTOOUTPUTSTATE_Never = 0
  • COPYTOOUTPUTSTATE_Always = 1
  • COPYTOOUTPUTSTATE_PreserveNewestFile = 2

Qui puoi vedere che PreserveNewest è l'unica opzione che si adatta al valore dell'interfaccia utente Copy if newer.

Il mio punto è: se avete dubbi sulle opzioni possibili, potete sempre verificarlo nel riferimento all'automazione, tuttavia, personalmente lo uso solo scrivendo script PowerShell NuGet che modificano i file msbuild nel codice. Il modo più semplice è impostare il valore nell'interfaccia utente e vedere che abbiamo ottenuto in seguito il file msbuild.