gpt4 book ai didi

visual-studio-2012 - (解决方案范围的前/后事件)MSBuild 目标在命令行中执行但不在 VS 中执行

转载 作者:行者123 更新时间:2023-12-01 03:54:19 25 4
gpt4 key购买 nike

基本上,我正在尝试为整个解决方案实现一些构建前和构建后事件,而不仅仅是独立项目。我以前在这里看到过这个问题,但没有解决同样的问题。我创建了两个 .targets文件名 after.TestSolution.sln.targetsbefore.TestSolution.sln.targets.在每个:


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CreateFile" BeforeTargets="Build">
<Message Text="Creating a file" Importance="high" />
<Exec Command="C:\users\me\Desktop\CreateFiles.bat" />
</Target>
</Project>


<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyFile" AfterTargets="Build">
<Message Text="Copying a File" Importance="high" />
<Exec Command="C:\users\me\Desktop\CopyFiles.bat" />
</Target>
</Project>

这些只是简单的测试批次,以查看事件是否有效。然后我从命令行通过 MSBuild 构建解决方案:这完全有效。 MSBuild 在解决方案构建之前执行“之前”中的代码,之后执行“之后”中的代码。然而,问题是当我从 VS 构建解决方案时,批处理永远不会运行。所以,我不确定为什么会这样。我对 MSBuild 任务相当陌生。

最佳答案

这是一个 known VS feature/bug .如前所述,VS 的构建方式与 msbuild 不同。命令行上的 Msbuild 从解决方案生成一个 msbuild 文件(如果您将 MSBUILDEMITSOLUTION 环境变量设置为 1,您将看到为您的解决方案生成的 .metaproj 文件,其中导入了之前/之后的目标)。我的理解是 VS 并没有这样做,而是以编程方式调用 msbuild,没有解决方案的扩展点。

关于visual-studio-2012 - (解决方案范围的前/后事件)MSBuild 目标在命令行中执行但不在 VS 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641836/

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