.net 在C#项目中重写BuildDependsOn时遇到问题
我正试图按照这里的文档进行操作--将一个简单的目标添加到.NET核心项目文件的构建管道中。然而,我做错了什么,只是看不见而已 我采用了一个简单的“Hello World”项目文件,添加了一个只打印消息的简单目标,并按照文档建议重新定义了.net 在C#项目中重写BuildDependsOn时遇到问题,.net,msbuild,.net,Msbuild,我正试图按照这里的文档进行操作--将一个简单的目标添加到.NET核心项目文件的构建管道中。然而,我做错了什么,只是看不见而已 我采用了一个简单的“Hello World”项目文件,添加了一个只打印消息的简单目标,并按照文档建议重新定义了BuildDependsOn,以获得: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType>
BuildDependsOn
,以获得:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<BuildDependsOn>
Target1;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>
<Target Name="Target1">
<Message Text="Running Target1" Importance="high" />
</Target>
</Project>
Exe
netcoreapp2.2
Target1;
$(BuildDependsOn)
当我尝试使用msvc2017或dotnet CLI(“dotnet Build-c Release Hello.csproj”)来“构建”此项目时,不会打印此消息
当我使用msbuild查看完全预处理的项目时,我可以清楚地看到BuildDependsOn
属性的定义。我不知道为什么我的重新定义不起作用。我也尝试过用rebuildedpendson
进行同样的操作,但没有效果
有什么建议吗?我错过了什么
提前感谢您的帮助 我更喜欢添加依赖于其他内容的构建目标的方法是
BeforeTargets
和BeforeTargets
。
此处记录:
我认为这只是简单得多,而且我可能会添加更少的XML
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<Target Name="Target1" AfterTargets="Build" >
<Message Text="Running Target1" Importance="high" />
</Target>
</Project>
Exe
netcoreapp2.2
事情没有像您预期的那样工作的原因是您有一个SDK风格的项目:
请注意:
网络46
相当于:
网络46
在项目结束时隐式导入Sdk.targets
,会覆盖BuildDependsOn
的定义
您可以显式地添加导入,然后在Sdk.targets
导入之后添加BuildDependsOn
的定义
Exe
netcoreapp2.2
Target1;
$(BuildDependsOn)
请参见和。是的,我能够用类似的东西使它工作。我觉得很奇怪,在“如何扩展构建过程”页面中阐述的机制似乎不起作用。所以,我想我一定是遗漏了什么,但看不到什么。@ddneilson“如何扩展构建过程”的哪一部分似乎不起作用?您是否看到该文档中与SDK样式项目相关的注释?