msbuild target - AfterTargets = 解决方案"Build"?



我正在寻找一种方法来运行我定义的Target只一次每个构建过程,而不是每个项目得到构建。

我在Directory.Build.props

中定义了以下内容
<Target Name="MyTarget" AfterTargets="AfterBuild" >
<Message Text="Hello World!!!" Importance="High" />
</Target>

应该只运行一次,无论msbuild进程正在构建多少个项目,目前它对每个项目都发生。

如果我在Visual Studio中击中(Re-)Build Soltution(Re-)Build [ProjectName]或击中F5,只要任何构建发生,我只想执行MyTarget一次,这都不重要。

回答这个问题:

如果我的猜测是正确的,纯粹的msbuild函数是不够的,你必须使用外部文件来帮助它工作。

在解决方案文件夹中创建一个名为test.txt的文件,并将0写入txt文件。

然后,像这样修改你的Directory.Build.props:
<Project>
<PropertyGroup>
<Record></Record>
</PropertyGroup>
<ItemGroup>
<File Include="..test.txt"></File>
</ItemGroup>
<Target Name="GetConditionValue" BeforeTargets="PrepareForBuild">

<ReadLinesFromFile File="@(File)">
<Output TaskParameter="Lines" PropertyName="Record"/>
</ReadLinesFromFile>
</Target>


<Target Name="MyTarget" AfterTargets="Build" Condition="'$(Record)'=='0'">
<WriteLinesToFile File="@(File)" Lines="2" Overwrite="true"></WriteLinesToFile>
<Message Text="Hello World!!!" Importance="High" />
</Target>
</Project>

,当你开始一个新的构建过程,你应该清除test.txt文件到0来重新开始。

相关内容

  • 没有找到相关文章

最新更新