C# Wix&;T4:否“;自定义工具“;选项

C# Wix&;T4:否“;自定义工具“;选项,c#,.net,wix,windows-installer,t4,C#,.net,Wix,Windows Installer,T4,我想使用T4生成一个片段,但是在向Wix项目添加了一个.tt文件之后,这个文件没有“自定义工具”选项。右键单击.tt文件时,没有“运行自定义工具”菜单项 这有黑客吗?我使用的是VS 2010和最新的Wix 3.5,我从来没有使用过T4,更不用说Wix了,但是谷歌搜索到了一些有趣的点击,包括最后一个问你在问什么,但没有人知道答案 [WiX用户]在Visual Studio 2008中对T4模板的WiX 3.0支持]不幸的是,WiX VS project系统不支持单文件生成器,因此您将无法获得默

我想使用T4生成一个片段,但是在向Wix项目添加了一个.tt文件之后,这个文件没有“自定义工具”选项。右键单击.tt文件时,没有“运行自定义工具”菜单项


这有黑客吗?我使用的是VS 2010和最新的Wix 3.5,我从来没有使用过T4,更不用说Wix了,但是谷歌搜索到了一些有趣的点击,包括最后一个问你在问什么,但没有人知道答案


[WiX用户]在Visual Studio 2008中对T4模板的WiX 3.0支持]

不幸的是,WiX VS project系统不支持单文件生成器,因此您将无法获得默认的T4体验

你有两个选择。 OlegSych的T4Toolbox有一些工具可以运行针对其他项目的模板,因此您可以在一个项目中运行它们,并将输出定向到WiX项目


或者,T4有一个简单的服务API StextTemplateing。您可以编写一个小型VS加载项,它可以在Wix项目中生成您想要的任何一代。

使用Gareth对T4工具箱的建议,我能够加载到T4模板中,但它没有按预期生成文件

最后我用我的模板创建了一个存根C#类项目,并运行了一个post-build命令将输出复制到WiX安装程序。下面是一个工作示例

WiX+T4示例

下面是一个快速而肮脏的脚本,它遍历文件夹结构,包含除被排除文件中的内容以外的所有内容。这至少是一个很好的起点,可以逐个文件夹将文件添加到项目中

-遍历目录结构和维护文件列表的实用方法

-生成WiX include

如果您在同一解决方案中拥有(或可以创建)另一个支持T4模板的项目,有一种简单的方法可以做到这一点

  • 在该项目的某个位置创建T4模板
  • 在WIX项目中,添加输出文件(右键单击项目,添加现有项,添加为链接)

  • 好吧,至少我试着对海报做了一些研究,没有说一些粗鲁的话,比如“让我帮你谷歌一下”。关于WiX的T4问题,很明显,任何人提供真实答案的机会都是微乎其微的,而且刚离开小镇的可能性也很小。@Christopher并不是那么模糊。在WiX中,每个包含的文件都必须手动引用,因此很自然地希望找到一种自动化的方法,T4显然是首选。@Hooligan,老实说,你花了18个月的时间才留下这条评论,这一事实说明,有人会对结合WiX和T4感兴趣,这是多么的安全。这和我的问题是一样的。VisualStudio中的大多数项目都支持运行T4模板。WiX项目没有。我的WiX项目将从中受益匪浅。怎样才能做到呢?不晦涩。@Ronnie Overby你可以试试我下面回答中的建议。这种方法有一些缺点,但在我看来,它比手动添加一整吨文件要好。我也在使用VS2010和Wix 3.x。为此,我向Wix团队提出了一个功能请求。也许你(或其他人)可以对这个问题发表意见?请参阅此问题以及Files.tt。每次运行tt时,tt都会更改文件的GUID。我认为那很糟糕。随着时间的推移,您希望每个文件的ID保持一致。@Ronnie我使用代码的方式是生成初始安装脚本,然后从那时起手动管理文件。每个文件都应该有一个唯一的guid,如果要更新文件,您需要为新文件提供一个新的guid,并确保删除旧文件。