首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET核心-覆盖默认构建目标

.NET核心-覆盖默认构建目标
EN

Stack Overflow用户
提问于 2017-11-08 12:24:54
回答 2查看 6.1K关注 0票数 10

我有一个有角度的项目,我想把它包含在我的Visual解决方案中。我添加了一个新项目,类型为ASP.NET Core 2/空,它包含所有文件,不包括node_modules和类似的文件,直接在csproj中使用通配符。

我遇到的问题是覆盖默认的构建目标--当生成目标被触发时,我想将其称为"ng build",但这并没有发生。有关这方面的一些材料可以找到这里这里

1试图覆盖默认生成目标:

代码语言:javascript
复制
 <Target Name="Build">
    <Message Importance="high" Text="Overriding default build" />
 </Target>

但还是没有执行。

2试图指定DefaultTargets,但调用方式不同:

代码语言:javascript
复制
 <Project DefaultTargets="NgBuild" Sdk="Microsoft.NET.Sdk.Web">
   ...
 <Target Name="NgBuild">
    <Message Importance="high" Text="Overriding default build" />
 </Target>

只有在我添加属性BeforeTargets="Build"之后,消息才会出现。

所以问题是-我如何覆盖默认的构建行为?最终,我希望有一个目标将在其中调用<Exec Command="ng build">,而不生成.exe,并且不需要项目中的任何.cs文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-03 15:14:11

Build目标不被覆盖的原因是因为在加载自定义目标时还没有定义它--您的自定义目标被默认目标覆盖。

如果使用<Project Sdk="…">使用基于SDK的项目文件,则SDK道具和目标文件(仅两个msbuild文件)将在项目文件之前和之后自动导入。Build目标实际上是通过在项目内容之后的导入来定义的,因此重写了在项目文件中定义的导入。

如果您真的想重写Build目标(稍后将详细介绍),我建议您从隐式SDK导入转移到显式SDK导入:

代码语言:javascript
复制
<Project>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.Web" />
  <!-- Project content -->
  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.Web" />
  <Target Name="Build">
    <!-- this will override the default Build target. -->
  </Target>
</Project>

但是,SDK是围绕编译和生成.NET程序集构建的。您可能会发现,覆盖Build目标可能会导致意外的结果,包括您的项目无法生成其他项目可以引用的输出(如果需要的话)。

如果您只是想向项目中添加一个构建步骤,我建议添加一个自定义目标,该目标与退出的构建过程挂钩:

代码语言:javascript
复制
<Target Name="NgBuild" BeforeTargets="BeforeBuild">
  <Exec Command="ng build" />
</Target>
票数 24
EN

Stack Overflow用户

发布于 2017-11-09 06:08:44

似乎,您需要指定一个新的目标来解决您的问题。

例如,在我的.csproj中,我有以下几行:

代码语言:javascript
复制
  <Target Name="TestTarget">
    <Exec Command="echo hello" />
    <Exec Command="echo goodbye" />
  </Target> 

要调用它们,我需要执行以下命令:

代码语言:javascript
复制
dotnet msbuild /t:TestTarget

在这个场景中,您可以指定命令和执行顺序。希望这个会有帮助的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47179705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档