提问人:Shynord 提问时间:6/19/2023 最后编辑:Shynord 更新时间:6/19/2023 访问量:32
用于 Wix 设置的 T4 模板
T4 Templates for Wix Setup
问:
我目前正在研究一个 C# 解决方案,该解决方案多年前被我没有联系过的 somone 放弃了。 它使用 Wix 生成 msi 并包含一个名为“TemplatingWixSetup”的整个项目,其中包括 T4 模板。请注意,我对 Wix 设置很有经验。 其中一部分包含方法,但这些方法未包含在任何类定义中。这不是编译,所以我将所有方法都包含在一个以每个模板的 .tt 文件名命名的类中。在这里,WixDirectoryTree.tt 包含所需的方法,因此我将其包含的所有方法都包含在名为 WixDirectoryTree 的类中。
然后,我收到其中一个模板的错误很少。它仅使用其中一种方法来检查目录是否存在,并在需要时创建它。
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".wxs" #>
<#@ assembly name="System.Core.dll" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Security.Cryptography" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ include file="WixDirectoryTree.tt" #>
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<#
TryAndGenerateDirectory(@"..\MatterSlice", "OpenSourceMatterSlice", "$(var.SolutionDir)MatterSlice", "ProgramFilesOpenSourceMatterSlice");
TryAndGenerateDirectory(@"..\t4", "OpenSourceMonoT4", "$(var.SolutionDir)t4", "ProgramFilesOpenSourcet4");
#>
</Wix>
我通过创建包含在 WixDirectoryTree 中的类的实例来纠正其中的一部分,但仍然存在一个错误。请参阅以下代码,该代码是整个相关文件:
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".wxs" #>
<#@ assembly name="System.Core.dll" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Security.Cryptography" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ include file="WixDirectoryTree.tt" #>
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<# var wixDirectoryTree = new WixDirectoryTree();
wixDirectoryTree.TryAndGenerateDirectory(@"..\MatterSlice", "OpenSourceMatterSlice", "$(var.SolutionDir)MatterSlice", "ProgramFilesOpenSourceMatterSlice");
wixDirectoryTree.TryAndGenerateDirectory(@"..\t4", "OpenSourceMonoT4", "$(var.SolutionDir)t4", "ProgramFilesOpenSourcet4");
#></Wix>
出现以下错误:
Erreur CS1022 编译转换:类型或命名空间定义,或文件末尾 TemplatingWixSetup C:\Users\Admin\Documents\cola\TemplatingWixSetup\OpenSource.tt 350 Actif
老实说,我不知道该怎么做,或者是什么原因导致了这个问题。我确保标签“”后面没有任何东西。 我想知道这是否与我引入 befor 类这一事实有关,但这也意味着编译错误。
答: 暂无答案
评论