Quale nome dai al file di build del progetto MSBuild?
-
02-07-2019 - |
Domanda
Sto cercando di imparare come usare MSBuild in modo che possiamo usarlo per costruire il nostro progetto. C'è quello che sembra essere un buco molto grande nella documentazione e trovo il buco dappertutto, il buco è come si nomina o si designa in altro modo il file di progetto MSBuild?
Ad esempio, il tutorial su MSBuild che può essere scaricato da Microsoft fornisce alcuni dettagli sul contenuto del file di build. Ad esempio, ecco un po 'del loro file di progetto Hello World.
<Project MSBuildVersion = "1.0" DefaultTargets = "Compile">
<Property appname = "HelloWorldCS"/>
<Item Type = "CSFile" Include = "consolehwcs1.cs"/>
<Target Name = "Compile">
<Task Name = "CSC" Sources = "@(CSFile)">
<OutputItem TaskParameter = "OutputAssembly" Type = "EXEFile" Include = "$(appname).exe"/>
</Task>
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
E continua su blah, blah, blah Oggetti blah blah blah compiti, ecco come lo fai ed ecco come lo fai. Inutile, completamente inutile. Perché non vanno mai in giro a dire come questo file xml dovrebbe essere riconosciuto dall'app MSBuild. Dovrebbe essere chiamato in un modo particolare? Dovrebbe essere inserito in una directory particolare? Tutti e due? Né?
Non è solo il tutorial MS in cui non ne parlano. Non sono stato in grado di trovarlo su MSDN o su qualsiasi link che riesca a strappare da Groups.Google.
Qualcuno qui lo sa? Lo spero proprio.
Modificato per aggiungere: ho scambiato il File .proj incluso nel tutorial essere il file .csproj e questo è quello uno si è nutrito di MSBuild, ma ci è voluta la risposta qui sotto prima di vederlo. Avrebbe dovuto essere piuttosto ovvio, ma l'ho perso.
Soluzione
Puoi nominare il file come ritieni opportuno. Dall'aiuto per MSBuild
msbuild.exe /?
Microsoft (R) Build Engine Version 2.0.50727.3053
[Microsoft .NET Framework, Version 2.0.50727.3053]
Copyright (C) Microsoft Corporation 2005. All rights reserved.
Syntax: MSBuild.exe [options] [project file]
Quindi se salvate il file come mybuildfile.xml userete la sintassi:
msbuild.exe mybuildfile.xml
Altri suggerimenti
Non devi specificare il file di build se rispetti la seguente strategia:
Oggi, quando invochi msbuild.exe dalla riga di comando e non farlo specifica tutti i file di progetto come argomenti, quindi facciamo un po 'di auto inferenziale e scansione e decidere se noi dovrebbe costruire qualsiasi cosa. Se lo troviamo o un progetto msbuild (niente che ha un'estensione di * proj) o a file di soluzione (.sln), costruiremo o il progetto o la soluzione come purché ci sia una sola soluzione o un progetto nella directory. Se ci è una soluzione e un progetto, lo faremo dare la preferenza alla soluzione. Se c'è più di un progetto o più di una soluzione, viene emesso un errore messaggio perché non possiamo decidere quale uno da costruire.
Questo è tratto da Richiesta di feedback su nuove funzionalità: / IgnoreProjectExtensions - Una nuova opzione della riga di comando .
Nomino sempre i miei script scritti manualmente build.proj .
Non una risposta diretta, ma correlata; se usi .msproj
come estensione, Visual Studio ti offre intellisense.
O per i più pigri, come me.
msbuild.exe project-file-name.vcproj /t:Rebuild /p:Configuration=Release
Visual Studio 2012 riconosce il .msbuildproj
come estensione e lo tratterà come un "progetto" in Esplora soluzioni.