lys*_*cid 3 .net c# msbuild build
我有一个非常简单的MSBuild脚本,该脚本可以构建一堆.sln文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Builds all *.sln files under this repository. -->
<ItemGroup>
<SolutionFiles Include="**/*.sln" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionFiles)" Targets="Rebuild" />
</Target>
<Target Name="AfterBuild">
<Message Text="After Build" />
</Target>
<Target Name="AfterRebuild">
<Message Text="After Rebuild" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
AfterBuild / AfterRebuild目标应该做其他事情,我现在正在测试它们。
我希望在每个项目构建后都可以激发这些目标,但是不会被激发。
难道我做错了什么?
编辑:由于每个项目都定义了自己的AfterBuild目标,我想这种方式是行不通的。我尝试将AfterBuild和AfterRebuild目标放置在它们自己的文件(custom.targets)中,并使用/ p:CustomAfterMicrosoftCommonTargets运行MSBuild = custom.targets。这也没有用。
有什么建议么?
您必须<Import Project="MyCommon.proj" />
在后面的每个项目中添加一个Microsoft.*.targets
。因为AfterBuild
是在Microsoft.*.targets
它实际上记录在每个项目文件中。
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. -->
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
Run Code Online (Sandbox Code Playgroud)
导入您的自定义或通用目标,如下所示:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MyBuildRoot)\Common.targets" />
Run Code Online (Sandbox Code Playgroud)
您甚至可以覆盖OutputPath
和IntermediateOutputPath
。但它们必须先导入Microsoft.CSharp.targets
。否则,它们将不会被中定义的目标正确处理Microsoft.CSharp.targets
。
<PropertyGroup>
<DocumentationFile></DocumentationFile> <!-- disables xml-doc generate -->
<ProjectRootPath>$(MSBuildThisFileDirectory)</ProjectRootPath>
</PropertyGroup>
<PropertyGroup Condition="$(BuildInOnePlace)!=''">
<BaseIntermediateOutputPath>$(ProjectRootPath)obj/<BaseIntermediateOutputPath>
<BaseOutputPath>$(ProjectRootPath)bin/<BaseOutputPath>
</PropertyGroup>
<PropertyGroup Condition="$(BuildInOnePlace)==''">
<BaseIntermediateOutputPath>obj/<BaseIntermediateOutputPath>
<BaseOutputPath>bin/<BaseOutputPath>
</PropertyGroup>
<PropertyGroup>
<OutputPath>$(BaseOutputPath)$(Configuration)/</OutputPath>
<IntermediateOutputPath>$(BaseOutputPath)$(Configuration)/</IntermediateOutputPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
<Target Name="AfterBuild">
<Message Text="$(ProjectName): $(OutputPath)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
...
<Import Project="../Common.props" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="../Common.targets" />
...
Run Code Online (Sandbox Code Playgroud)
...
<Import Project="../Common.props" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="../Common.targets" />
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4575 次 |
最近记录: |