我在构建时使用T4转换有困难(使用MsBuild)。
我试图将生成的文件放到解决方案/项目中。如果我只保存或运行自定义工具,则会生成文件,并自动添加到解决方案中。
这些文件也是在构建时生成的,但不会添加到解决方案中#34;开箱即用"。我不确定,这是我的错,还是默认行为。
我也无法为模板生成文件名。
我能够在构建输出中看到生成的文件,但是将它们作为参数传递给.tt文件是不成功的。
这里是.csproj的样子:
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
<AfterTransform>OnAfterTransform</AfterTransform>
</PropertyGroup>
<Target Name="OnAfterTransform">
<Message Text="@(GeneratedFiles)" Importance="high" />
<ItemGroup>
<T4ParameterValues Include="Generated">
<Value>@(GeneratedFiles)</Value>
<Visible>false</Visible>
</T4ParameterValues>
</ItemGroup>
</Target>
并构建输出:
==========构建:1成功,0失败,0最新,0跳过==========
<#@ parameter type="System.Collections.Generic.List<string>" name="Generated" #>
<#@ parameter type="System.String" name="Generated" #>
<#@ parameter type="System.String" name="GeneratedFiles" #>
...我无法将这些文件名转换为.tt文件。我真的不知道我应该为参数使用什么类型。从Oleg's page和其他人,我无法真正说出参数的类型。我也没有通过谷歌搜索找到相关的例子。
另一方面,我可以轻松传递ProjectFolder,例如:
<ItemGroup>
<T4ParameterValues Include="ProjectFolder">
<Value>$(ProjectDir)</Value>
<Visible>false</Visible>
</T4ParameterValues>
</ItemGroup>
并使用:
消费它<#@ parameter type="System.String" name="ProjectFolder" #>
<。>在.tt文件中。
所以,我的问题是: