如何将 XAML 转换注入到我的构建中?

2024-03-15

我想针对我的 XAML 资源字典运行自定义 EXE。假设我得到的这个 exe 将删除注释、空格和未使用的资源。原始 XAML 文件需要保持不变,但最终出现在 XAP 和 DLL 中的 XAML (silverlight) 和 BAML (wpf) 需要进行转换。它需要在我的计算机和构建服务器上运行。

我的问题是:运行这个exe的最简单、最可靠的方法是什么?

我的第一个想法是举办一个预构建活动。但这必须适用于原始 XAML 文件。开发会变得相当痛苦。

当构建后事件运行时,我的资源已经编译到 dll 中。

我有什么选择?


您应该将“exe”实现为 MSbuild 任务。

本质上,您构建了一个继承自的 C# 类Microsoft.Build.Utilities.Task类,并重写 Execute() 方法。

就像是

public class CleanXAML : Task 
{
}

然后指定(在构建文件或导入的外部 .tasks 文件中,任务名称和刚刚构建的 DLL 的路径)

<UsingTask AssemblyFile="C:\customtasks\XamlTasks.dll"
   TaskName="Rob.CustomTasks.Xaml.CleanXaml"/>

这使您能够像任何其他 MsBuild 任务一样调用它

<CleanXaml Source="$(PathtoOriginalXaml)" 
   Destination="$(SourceCodePath)\$(cleanXaml.xaml)" />

从那里您需要找出将其“注入”到您的构建过程中的最佳方法。根据您的构建方式(msbuild、vs2010、teambuild 或 teambuild 工作流程),有不同的方法可以实现此目的。本质上,您需要在调用 CoreCompile 目标之前发生此操作,并确保您的“输出 xaml”正确替换 CSC.exe 所期望的内容。

在 MsBuild 任务上进行一些搜索以获取更多信息,或者在此处提出任何问题。

我强烈推荐这种方法,而不是在 MSBuild 中使用 CallEXE 任务,b/c 这样,MSBuild 属性和项目保留在上下文中,因此您只需从构建步骤移动到构建步骤,而不是转移整个事情来进行转换,然后希望它继续工作。

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

如何将 XAML 转换注入到我的构建中? 的相关文章

随机推荐

  • C# - 方法的自动委托类型

    任何避免显式声明的方法MyMethodDelegate在这样的场景下 bool MyMethod string x BeginInvoke new MyMethodDelegate MyMethod x 我了解 lambdas a la g
  • C语言精确计时

    我下面有一些代码 我使用这段代码输出一些 1 和 0 unsigned output 38 来自嵌入式板的 GPIO 我的问题 两个输出值 1 0 或 0 1 之间的时间应该是416微秒正如我所定义的clock nanosleep下面的代码
  • 嵌套整数字段上的 Postgres jsonb 索引

    我的 postgres 数据库中有以下数据结构 一个名为的 jsonb 列customer RequestId 00000000 0000 0000 0000 000000000000 Customer Status A AccountId
  • 如何在同一个 select 语句中使用 count 和 group by

    我有一个SQLSELECT查询也使用GROUP BY 我想统计之后的所有记录GROUP BY子句过滤结果集 有什么办法可以直接用SQL来实现这个功能吗 例如 如果我有桌子users并想要选择不同的城镇和total用户数量 SELECT to
  • 为什么 Vue.js Chrome Devtools 没有检测到 Vue.js?

    我有一个简单的工作 Vue js 应用程序的以下代码 但 Vue js 开发工具没有响应 前几天还好好的 现在就不行了 可能是哪里出了问题 当我去webstore https chrome google com webstore detai
  • 使用 edmx 文件时如何指定连接字符串中的元数据位置

    我有一个 Web 项目 其数据模型在 edmx 文件中定义 连接字符串的开头如下 元数据 res 这一段时间以来效果很好 但是参与该项目的其他人创建了一个也使用实体框架的 dll 并将其添加到 bin 文件夹中 现在 当我尝试创建连接时 加
  • 为什么我不能使用具有存在量化类型的记录选择器?

    当使用存在类型时 我们必须使用模式匹配语法来提取forall编辑值 我们不能将普通的记录选择器用作函数 GHC 报告错误并建议使用与此定义的模式匹配yALL LANGUAGE ExistentialQuantification data A
  • 当参数有空格时,如何从 powershell 调用 msdeploy?

    我在尝试从 powershell 脚本发送到 msdeploy 的参数中遇到了空格问题 还有许多其他相关文章 但都没有解决问题 使用 Power Shell 和 MSDeploy 时遇到的问题 http forums iis net p 1
  • 无法加载文件或程序集“Microsoft.Office.Interop.Excel,版本=14.0.0.0”

    我有一个使用 MS Excel 文件读 写的网站 我将相关的 dll 添加到网站的 Bin 文件夹中 它在我的本地主机上运行得很好 我想是因为我在我的电脑上安装了 MS Excel 2010 但是当我将其上传到远程电脑并运行该网站时 它会抛
  • 设计模式 - Objective-C - MVC 模型视图控制器

    您好 我已经阅读了网上有关 MVC 的教程 并且已经阅读了此处的主题 我想我已经了解了 MVC 的概念 但我不确定它的实现 我尝试将其应用于一个简单的程序 一个带有标签和按钮的窗口 该按钮增加一个计数器 标签显示它的值 我尝试了两种不同的方
  • 如何运行命名空间内的 JavaScript 函数

    如果我有类似的东西 App editingMode function function setEditingMode entityID editingMode val 1 ajax type POST url Organisations M
  • 如何控制CVS存储库中的文件权限?

    目前 一些用户的 umask 设置方式导致对常规文件的执行权限 我想避免 有没有办法强制所有签入的文件只能被读取 但有一些例外 在 CVS 中处理此问题的推荐方法是什么 Cvs 命令选项 watch 也会阻止恢复文件权限 如果观看 则检出文
  • 使用不带标签的 Git 描述

    我有一个存储库 当我运行时它只给我一个哈希值git describe 直到今天我才知道它这样做是因为 always选项 这就是我正在使用的 因为该存储库没有标签 我有另一个包含很多标签的存储库 我该如何使用git describe排除标签并
  • Mysql 选择不在表中的位置

    我有 2 个表 A 和 B 具有相同的主键 我想选择 A 中而不是 B 中的所有行 以下方法有效 select from A where not exists select from B where A pk B pk 但看起来很糟糕 A
  • Oracle Select IN 参数中的多个字段

    Select FROM STUDENT WHERE student course student major IN SELECT schedule course schedule major FROM schedule 如果我必须提供静态值
  • defaultCalendarForNewEvents 失败

    当我尝试调用 newEventStore defaultCalendarForNewEvents 时 它返回一条错误消息 707 907 defaultCalendarForNewEvents failed Error Domain EKC
  • 实现具有多重继承的纯虚函数

    假设有这样一个接口 class A public virtual foo 0 还有一个班B它实现了这个接口 class B public A public virtual foo Foo implemented by B 终于有一节课了C有
  • 根据选定的<选项>动态更新表单操作

    所以 这就是我想要做的 我想要一个 HTML 格式的下拉列表 其中包含一个根据下拉列表的值而变化的提交按钮 所以 当我有这个时
  • MediaWiki 类别不会自动更新

    我有一个MediaWiki在 Linux 服务器上运行的实例似乎不会在提交页面编辑时自动更新其类别 我从未在我使用过的任何其他维基上看到过这一点 所以我想知道是否有一些脚本配置不正确 定期运行rebuildAll php or refres
  • 如何将 XAML 转换注入到我的构建中?

    我想针对我的 XAML 资源字典运行自定义 EXE 假设我得到的这个 exe 将删除注释 空格和未使用的资源 原始 XAML 文件需要保持不变 但最终出现在 XAP 和 DLL 中的 XAML silverlight 和 BAML wpf