我想在每次构建时构建我的.tt文件。我找到了这个解决方案(Get Visual Studio to run a T4 Template on every build,通过 Cheburek 回答)并按照步骤运行
Microsoft.TextTemplating.targets
和<TransformOnBuild>true</TransformOnBuild>
的导入添加到我的.csproj 我现在的问题是:
我在T4文件中使用以下程序集导入:
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="My.Example.Namespace.Path" #>
我需要这个,因为我需要访问在同一个项目中定义的类。但是现在(我认为因为tt-transformation是构建的第一件事)我不能使用这个命名空间导入,因为在构建时发生以下错误:
Error Compiling transformation: Metadata file '$(TargetPath)' could not be found.
T4文件在使用之前正在工作&#34;正常&#34; (保存T4文件时生成文件)
以某种方式可以执行T4转换(作为最后的构建步骤),这样我可以在我的T4文件中访问$(TargetPath)
而没有问题吗?
答案 0 :(得分:3)
我今天遇到了同样的问题,正在寻找答案。 问题是dll还没有构建,无法加载。 虽然如果已经在TargetPath中成功构建它应该可以工作。
我完成这项工作的方法是将代码分成两个项目。 t4模板中使用的代码现在位于另一个项目中。
我不得不在原始项目中引用新项目 在原始项目的t4模板中,我不得不更改程序集引用:
<#@ assembly name="$(SolutionDir)newproject\bin\Debug\newproject.dll" #>