我想在每个版本上构建我的.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转换是构建的第一件事),我不能使用这个命名空间导入,因为在构建时会发生以下错误:
Error Compiling transformation: Metadata file '$(TargetPath)' could not be found.T4 -文件在使用“普通”(保存T4文件时生成的文件)之前是工作的。
是否有可能执行T4转换(作为最后一步构建),这样我就可以在T4文件中没有问题地访问$(TargetPath)了吗?
发布于 2016-05-24 10:12:34
我今天也遇到了同样的问题,正在寻找答案。问题是dll尚未生成,无法加载。不过,如果TargetPath中已经有了成功的构建,那么它应该可以工作。
我完成这项工作的方法是将代码分成两个项目。t4模板中使用的代码现在在另一个项目中。
我不得不参考原项目中的新项目。
在原始项目的t4模板中,我必须更改程序集引用:
<#@ assembly name="$(SolutionDir)newproject\bin\Debug\newproject.dll" #>https://stackoverflow.com/questions/29676672
复制相似问题