Mar*_*ger 0 .net c# msbuild t4 build
我想在每次构建时构建我的 .tt 文件。我找到了这个解决方案(让 Visual Studio 在每个构建上运行一个 T4 模板,由Cheburek回答)并按照以下步骤运行它
Microsoft.TextTemplating.targets和<TransformOnBuild>true</TransformOnBuild>我的.csproj我现在的问题是:
我在 T4 文件中使用以下程序集导入:
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="My.Example.Namespace.Path" #>
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我需要访问在同一个项目中定义的类。但是现在(我认为因为 tt-transformation 是在构建时完成的第一件事)我不能使用这个命名空间导入,因为在构建时出现以下错误:
Error Compiling transformation: Metadata file '$(TargetPath)' could not be found.
Run Code Online (Sandbox Code Playgroud)
T4 文件在“正常”使用之前工作正常(保存 T4 文件时生成文件)
是否有可能以某种方式执行 T4 转换(作为最后一个构建步骤),以便我可以$(TargetPath)毫无问题地访问我的 T4 文件?
我今天遇到了同样的问题,正在寻找答案。问题是dll尚未构建,无法加载。尽管如果 TargetPath 中已经成功构建,它应该可以工作。
我获得这项工作的方式是将代码拆分为两个项目。t4 模板中使用的代码现在在另一个项目中。
我不得不在原始项目中引用新项目。
在原始项目的 t4 模板中,我不得不更改程序集引用:
<#@ assembly name="$(SolutionDir)newproject\bin\Debug\newproject.dll" #>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |