.net - 在 C# 项目中覆盖 BuildDependsOn 时遇到问题
问题描述
我正在尝试遵循此处的文档- https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2017 -- 将一个简单的 Target 添加到 .NET Core 项目文件的构建管道中。但是,我做错了什么,但只是看不到它。
我采用了一个简单的“Hello World”项目文件,添加了一个仅打印消息的简单目标,并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>
当我尝试使用 msvc2017 或 dotnet CLI(“dotnet build -c Release Hello.csproj”)“构建”此项目时,不会打印该消息。
当我使用 msbuild 查看完全预处理的项目时,我可以清楚地看到BuildDependsOn
属性的定义。我不确定为什么我的重新定义没有被采纳。我也尝试过相同RebuildDependsOn
的效果,但效果相同。
有什么建议么?我在这里想念什么?
在此先感谢您的帮助!
解决方案
事情没有像您期望的那样工作的原因是因为您有一个 SDK 风格的项目:<Project Sdk="Microsoft.NET.Sdk">
.
请注意:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
相当于:
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Sdk.targets
项目末尾的隐式导入会覆盖您对BuildDependsOn
.
您可以改为显式添加导入,然后BuildDependsOn
在导入后添加您的定义Sdk.targets
。
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<Target Name="Target1">
<Message Text="Running Target1" Importance="high" />
</Target>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<BuildDependsOn>
Target1;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>
</Project>
推荐阅读
- django - Django CreateView 忽略 get_success_url
- hive - Hive 中多个字段的相同联接
- react-native - 在 Expo React Native 应用程序上加载视频时指示加载的最佳方式是什么?
- ios - How to fix the position of searchbar us
- objective-c - 为什么我的 NSMutableString 编辑有时不起作用?
- php - 创建删除后无法登录或添加新管理员
- database - Firebase 实时数据库是否仅在有限区域内工作?
- algorithm - 社交网络分析 - 找到认识每个人的最小集合
- typescript - 通用标识函数可以推断元组类型吗?
- android - 我的原始文件夹有问题没有出现在代码中,即使它在里面也总是给出红色