tools the sln node net framework error msbuild vcbuild

the - Tarea VCBuild en MSBuild-change outputpath



node sass msbuild error (2)

Estoy intentando escribir una versión automatizada para uno de nuestros productos, y me he topado con una pared para algunos de nuestros proyectos de VC ++: necesito poder establecer la ruta de salida hacia donde se copiarán los conjuntos una vez que hecho.

Aquí hay un archivo improvisado de msbuild:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <Target Name="Build"> <VCBuild Projects="C:/src/SomeProject/SomeProject.vcproj" ToolPath="C:/Program Files/Microsoft Visual Studio 9.0/VC/vcpackages" Configuration="Debug" /> </Target> </Project>





La respuesta de Stijn:

Pensé que usaría este espacio para aclarar cómo utilicé personalmente la respuesta de Stijn para resolver esto. Tiene un código en su archivo MSBuild que escribe el archivo vsprops para él. Decidí tomar un enfoque más simple y simplemente escribir el archivo manualmente.

Creé este archivo, llamado build.vsprops (mi ruta de salida es V :)

<?xml version="1.0"?> <VisualStudioPropertySheet ProjectType="Visual C++" Version="8.00" Name="Overrides" OutputDirectory="V:/"> <Tool Name="VCCLCompilerTool" AdditionalUsingDirectories="V:/" /> </VisualStudioPropertySheet>

Luego edité mi archivo MSBuild para agregar el parámetro Override:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <Target Name="Build"> <VCBuild Projects="C:/src/SomeProject/SomeProject.vcproj" ToolPath="C:/Program Files/Microsoft Visual Studio 9.0/VC/vcpackages" Configuration="Debug" Override="$(MSBuildProjectDirectory)/build.vsprops" /> </Target> </Project>


Eche un vistazo al parámetro Override para la tarea VCBuild . Básicamente, especifica una hoja de propiedades que puede usar para anular cualquier propiedad que desee (tiene el mismo efecto que agregar una hoja de propiedades al principio de la lista en un proyecto dentro de VS). Incluso podría generar el archivo de anulación utilizando la tarea WriteLinesToFile.

Ejemplo:

<PropertyGroup> <VCOverridesFile Condition=" ''$(VCOverridesFile)''=='''' ">overrides.vsprops</VCOverridesFile> <VCOverridesOpen>%3C?xml version=%221.0%22?%3E%0D%0A%3CVisualStudioPropertySheet ProjectType=%22Visual C++%22 Version=%228.00%22 Name=%22My Overrides%22%3E</VCOverridesOpen> <VCOverridesClose>%3C/VisualStudioPropertySheet%3E</VCOverridesClose> <MyOutPath>&lt;Tool Name="VCLinkerTool" OutputFile ="c:/my.exe"/&gt;</MyOutPath> </PropertyGroup> <Target Name="WriteOverridesFile"> <WriteLinesToFile File="$(VCOverridesFile)" Lines="$(VCOverridesOpen);$(AdditionalVCOverrides);$(VCOverridesClose)" Overwrite="true" /> </Target>

A continuación, pase $ (VCOverridesFile) a la propiedad Override y asegúrese de que su tarea VCBuild DependsOnTarget WriteOverridesFile.


Si lo hace de manera sucia, puede pasar la ruta del directorio de salida a través de los argumentos de la línea de comandos de msbuild .

msbuild yourProject /p:OutDir=yourPath

Aunque sospecho, debería haber una mejor manera de lograr la tarea. La idea principal es establecer la propiedad ''OutDir'' de tal forma que su SomeProject.vcproj no lo sobreescriba