在 CoreBuild 之前运行目标?

2023-12-15

我正在添加自定义.tt模板生成目标到我的项目之前运行CoreBuild,似乎有两种方法可以做到这一点:

<Project...>
    <Target Name="TransformOnBuild" AfterTargets="BeforeBuild">
</Project>

and

<Project...>
    <Target Name="TransformOnBuild" BeforeTargets="CoreBuild">
</Project>

如果我的目标应该在构建项目之前运行,因为项目依赖于它,那么我使用后者会更好吗?我见过前者用来做诸如生成文本模板之类的事情,但这似乎是一种不可靠的方法,因为它可能会在之后运行CoreBuild,为时已晚。或者有什么原因吗AfterTargets="BeforeBuild"仍然保证在核心构建之前运行吗?

我也见过BeforeTargets="BeforeBuild"这将建设得更早。这是放置 `.tt 文本生成目标的更好位置吗?


基于@stjin的答案,一个好的解决方案似乎是使用

BeforeTargets="CoreCompile" DependsOnTargets="PrepareForBuild"

这就是 .net sdk(.net core / 标准项目的新型 csproj)用于自动生成 AssemblyInfo.cs.

它使用以下注释来解释原因:

请注意,这必须在每次调用 CoreCompile 之前运行 确保所有编译器运行都能看到生成的程序集信息。那里 至少有一种涉及 Xaml 且调用 CoreCompile 的场景 没有其他潜在的钩子,例如 Compile 或 CoreBuild 等,所以 我们直接连接到 CoreCompile。此外,我们必须运行afterPrepareForBuild 确保中间目录已经 创建的。

请注意“中间目录”(obj/[TargetFramework]在这种情况下)是输出的位置.cs文件放置在这种情况下,这也可能是您想要做的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CoreBuild 之前运行目标? 的相关文章

随机推荐

  • SingleWrite 与 TripleWrite

    我非常清楚何时何地使用 SingleWrite 作为 MQ 中的日志算法是有利的 它有利于高吞吐量 低并发工作负载 当工作负载更加并发时 TripleWrite 的开销就不那么重要了 我不明白并且正在努力寻找任何有关 TripleWrite
  • 应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad(连接已关闭)

    我尝试将我的应用程序从 Rails 5 2 升级到 6 0 升级后运行rspec它会引发错误PG ConnectionBad connection is closed 该错误是由表达式引起的ActiveRecord Migration ma
  • 路径依赖类型是子类型吗?

    trait A trait B def foo A this B new B def bar A B foo def baz A this B bar type mismatch found A B required A this B 我说
  • 选择字段中不同的第一个单词

    我希望能够执行选择查询 仅获取字符串中不同的第一个单词 不包括最后一个单词 如果不清楚 这是我想要的下表结果 苹果 iPhone 4S苹果 iPhone 4苹果 iPhone 6 Plus id model 1 Apple iPhone 4
  • 如果我在 scanf 函数中使用带有字符串的“&”会发生什么?

    我刚刚在博客中看到一些代码 它使用了 scanf s T 但正如我们所知 我们不应该在字符串中使用 符号 因为它会自动分配该字符串的首地址 我确实运行了该代码 令人惊讶的是它正在工作 所以我想知道当我使用时会发生什么 在字符串中 inclu
  • 如何使用 python 更改桌面背景?

    如何使用 python 更改桌面背景 我想在 Windows 和 Linux 上都这样做 在Python2 5或更高版本的Windows上 使用ctypes加载user32 dll并调用SystemParametersInfo 使用 SPI
  • 记住刷新后哪个选项卡处于活动状态

    我在网页上使用 jquery 选项卡 当刷新页面时 它会丢失我曾经使用过的选项卡并返回到第一个选项卡 有谁遇到过这个问题并知道如何解决它 和其他人一样 我也在 jQueryUI 1 10 中为 ui tabs cookie 历史而苦苦挣扎
  • 使用散点图可视化大型 3D 数据集

    我正在 MATLAB 中运行模拟 其中有一个大型 3D 数据集 每个时间步长都会发生变化 我尝试使用 3D 散点图来可视化数据 其中随着模拟的进行 点会呈现不同的位置 大小 颜色和透明度级别 尺寸和颜色信息是多余的 在 MATLAB 中渲染
  • 如何让子控件正确的 id 到客户端

    我正在研究 ASP NET 但没有使用任何 ASP NET 的 AJAX 框架 现在我尝试使用 经典 JavaScript 方式 AJAX 更新客户端网格控件单元格中文本框和下拉列表的内容 但我面临的问题是 我想在客户端呈现时更新的控件 文
  • 更好的 SEO 可以从文章的 URL Slug 中删除“停止”字样? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我看到一个 WordPress 插件可以从文章 URL Slug 中删除某些单词 举个例子 在没有插件的情况下 如果我创建一篇标题为 的文章 使用 Trello 应用程序将您的项目组织到看
  • 使用 JSON-Framework 将 NSMutableArray 作为 JSON 发送

    我在项目中成功使用 JSON Framework 来解码从服务器发送的 JSON 现在我需要以相反的方式进行操作 并且我遇到了问题 因为要发送的数据是从 CoreData 获取的 NSMutableArray 使用时 NSString js
  • 如何将原始输入捕获到精神语法的合成输出中?

    我正在研究 boost spirit qi grammar 并希望将原始文本的一部分复制到语法的合成输出结构中 更具体地说 与规则的组件之一匹配的部分 该语法最终将用作更复杂语法的子语法 因此我实际上无法访问原始输入 我猜测这可以通过语义操
  • Azure AD B2C:将内置流与自定义策略混合并共享 JWT 的加密密钥

    我正在开发一个使用 Azure AD B2C 和 NET Core API 的应用程序 我们正在尝试混合使用内置用户流和一个自定义策略 内置用于登录和重置密码的用户流程 以及用于注册的自定义策略 因为我们希望遵循此示例应用程序演示的邀请注册
  • jqgrid 省略号

    在 jqGrid 中 如果文本不适合并被截断 是否有一种本机方法可以在列末尾显示 我看到有一个 ui ellipsis 类 但我很困惑 如果文本被截断 它是否会自动添加 以及一旦调整列大小 它是否会自动消失 您可以使用以下CSS解决该问题
  • 使用 cURL 登录远程网页后,如何访问另一个网页并将其作为字符串返回?

    好吧 我对 cURL 还很陌生 我已经成功使用 cURL 登录网页并发送 POST 数据 但是一旦登录 我希望它能够在同一页面下加载各种网页SESSION并将数据提取为字符串 以便我可以检查网页是否包含特定字符串 我该怎么做呢 例如 它登录
  • SQL查询根据特定条件对分组进行计数

    我的表数据 id fieldId Name Text 1 101 name1 a1 2 102 name2 a2 3 101 name1 a1 4 103 name3 a2 5 102 name2 a3 6 101 name1 c1 7 1
  • 如何判断两个对象的类型是否兼容?

    我有一个通用函数 我想知道如何编写 List
  • 导入 Excel 数据似乎随机给出空值

    使用 SSIS for Visual Studio 2017 进行某些 Excel 文件导入 我创建了一个包含多个循环容器的包 这些循环容器调用特定的包来处理某些文件 我在执行一个特定包时遇到问题 因为它似乎随机决定每个 Excel 文件的
  • 如何居中对齐SPAN标签中包裹的img?

    我正在尝试居中对齐包裹在 span 但我这样做时遇到困难 我已将 CSS 和 HTML 上传到 jsfiddle http jsfiddle net 7nHhu 1 我试图让图像以 块 样式与内容居中对齐 即其上方和下方的所有文本 而不是向
  • 在 CoreBuild 之前运行目标?

    我正在添加自定义 tt模板生成目标到我的项目之前运行CoreBuild 似乎有两种方法可以做到这一点