Fare riferimento al nome o al percorso del file di progetto

È possibile usare il nome o il percorso del progetto nel file di progetto senza dover creare una proprietà. MSBuild fornisce proprietà riservate che fanno riferimento al nome del file di progetto e ad altre proprietà correlate al progetto. Per altre informazioni sulle proprietà riservate, vedere Proprietà di MSBuild riservate e note.

Usare le proprietà del progetto

MSBuild fornisce alcune proprietà riservate che è possibile usare nei file di progetto senza definirle ogni volta. La proprietà riservata MSBuildProjectName, ad esempio, fornisce un riferimento al nome file di progetto. La proprietà riservata MSBuildProjectDirectory specifica un riferimento al percorso del file di progetto.

Per usare le proprietà di progetto

  • Fare riferimento alla proprietà nel file di progetto con la notazione $(), come per qualsiasi altra proprietà. Ad esempio:

    <CSC Sources = "@(CSFile)"
        OutputAssembly = "$(MSBuildProjectName).exe"/>
    </CSC>
    

    Uno dei vantaggi dell'uso di una proprietà riservata è che eventuali modifiche apportate al nome file di progetto vengono incorporate automaticamente. La volta successiva in cui si compila il progetto, il file di output assumerà il nuovo nome senza nessuna altra azione da parte dell'utente.

    Per altre info sull'uso di caratteri speciali nei riferimenti a file o progetti, vedi Caratteri speciali di MSBuild.

Nota

Le proprietà riservate non possono essere ridefinite nel file di progetto.

Esempio 1

Il file di progetto di esempio seguente fa riferimento al nome del progetto come proprietà riservata per specificare il nome per l'output.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
    DefaultTargets = "Compile">

    <!-- Specify the inputs -->
    <ItemGroup>
        <CSFile Include = "consolehwcs1.cs"/>
     </ItemGroup>
    <Target Name = "Compile">
        <!-- Run the Visual C# compilation using
        input files of type CSFile -->
        <CSC Sources = "@(CSFile)"
            OutputAssembly = "$(MSBuildProjectName).exe" >
            <!-- Set the OutputAssembly attribute of the CSC task
            to the name of the project -->
            <Output
                TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

Esempio 2

Il file di progetto di esempio seguente usa la proprietà MSBuildProjectDirectory riservata per creare il percorso completo a un file del percorso del file di progetto.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Build the path to a file in the root of the project -->
    <PropertyGroup>
        <NewFilePath>$([System.IO.Path]::Combine($(MSBuildProjectDirectory), `BuildInfo.txt`))</NewFilePath>
    </PropertyGroup>
</Project>

Nell'esempio viene usata la sintassi della funzione Property per chiamare il metodo System.IO.Path.Combinestatico .NET Framework .