我试图通过将代码移动到与我的模板相同的程序集和命名空间中的帮助器方法来解决我的T4模板中的程序集引用难题,但是T4拒绝找到我的辅助方法。
辅助方法:
namespace PocoGenerator
{
public class EntityReflector
{
public static IEnumerable<PropertyInfo> GetPropertiesForTemplate()
{
var baseNameSpace = "";
var assemblyName = "DataObjects";
顽抗模板代码:
<# foreach(PropertyInfo prop in PocoGenerator.EntityReflector.GetPropertiesForTemplate()) { #>
public <#= prop.PropertyType #> <#= prop.Name #> {get; set; }
<# } #>
答案 0 :(得分:1)
T4没有在与项目代码相同的上下文中进行编译,因此您需要使用汇编指令来加载项目的输出。
只要您使用VS2010 SP1,就不会发现任何装配锁定问题。
然而,这种有助于构建它然后帮助构建的递归模板可能很脆弱,因为你需要一个版本的二进制来引导一个干净的构建。
如果可能的话,我会将您的帮助程序代码移动到一个Helper程序集中,该程序集不是您已完成项目的一部分,而只是您工具集的一部分。