Hacer referencia al nombre o la ubicación del archivo de proyecto

Puede utilizar el nombre o la ubicación del proyecto en el archivo del proyecto sin tener que crear su propia propiedad. MSBuild proporciona propiedades reservadas que hacen referencia al nombre de archivo del proyecto y a otras propiedades relacionadas con el proyecto. Para obtener más información sobre las propiedades reservadas, vea Propiedades reservadas y conocidas de MSBuild.

Usar las propiedades de proyecto

MSBuild proporciona algunas propiedades reservadas que se pueden usar en los archivos del proyecto sin tener que definirlas cada vez. Por ejemplo, la propiedad reservada MSBuildProjectName proporciona una referencia al nombre del archivo del proyecto. La propiedad reservada MSBuildProjectDirectory proporciona una referencia a la ubicación del archivo de proyecto.

Para usar las propiedades de proyecto

  • Haga referencia a la propiedad en el archivo del proyecto con la notación $(), como haría con cualquier propiedad. Por ejemplo:

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

    Una ventaja de utilizar una propiedad reservada es que cualquier cambio en el nombre del archivo del proyecto se incorpora automáticamente. La próxima vez que compile el proyecto, el archivo de salida tendrá el nuevo nombre, sin que tenga que hacer nada más.

    Para obtener más información sobre el uso de caracteres especiales en las referencias de archivo o proyecto, vea Caracteres especiales de MSBuild.

Nota:

Las propiedades reservadas no se pueden volver a definir en el archivo del proyecto.

Ejemplo 1

El siguiente archivo del proyecto de ejemplo hace referencia al nombre del proyecto como una propiedad reservada para especificar el nombre de salida.

<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>

Ejemplo 2

El siguiente archivo de proyecto de ejemplo usa la propiedad reservada MSBuildProjectDirectory para crear la ruta de acceso completa a un archivo en la ubicación del archivo de proyecto.

<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>

En el ejemplo se usa la sintaxis de la función de propiedad para llamar al método estático de .NET Framework System.IO.Path.Combine.