gpt4 book ai didi

msbuild - MSBuild 中的 VCBuild 任务 - 更改输出路径

转载 作者:行者123 更新时间:2023-12-02 10:10:20 27 4
gpt4 key购买 nike

我正在尝试为我们的一个产品编写一个自动构建,但我在一些 VC++ 项目中遇到了困难:我需要能够将输出路径设置为程序集所在的位置完成后复制。

这是一个临时的 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>





Stijn 的回答:

我想我应该用这个空间来澄清我个人如何使用 Stijn 的答案来解决这个问题。他的 MSBuild 文件中有一些代码可以为他编写 vsprops 文件。我决定采用更简单的方法,只需手动编写文件。

我创建了这个文件,名为 build.vsprops(我的输出路径是 V:)

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

然后我编辑了 MSBuild 文件以添加 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>

最佳答案

查看 VCBuild task 的 Override 参数。基本上,您指定一个属性表,您可以使用它来覆盖您想要的任何属性(它与将属性表添加到 VS 中项目的列表顶部具有相同的效果)。您甚至可以使用 WriteLinesToFile 任务生成覆盖文件。

示例:

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

然后将 $(VCOverridesFile) 传递给 Override 属性,并确保您的 VCBuild 任务 DependsOnTarget WriteOverridesFile。

关于msbuild - MSBuild 中的 VCBuild 任务 - 更改输出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4249221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com