gpt4 book ai didi

.net - 在 C# 项目中覆盖 BuildDependsOn 时遇到问题

转载 作者:行者123 更新时间:2023-12-05 00:39:53 29 4
gpt4 key购买 nike

我正在尝试关注此处的文档 -- https://learn.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>

How to: Extend the Visual Studio build processHow to: Use MSBuild project SDKs .

关于.net - 在 C# 项目中覆盖 BuildDependsOn 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703037/

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