Visual studio Can';t访问方法与我的T4模板位于同一程序集中

Visual studio Can';t访问方法与我的T4模板位于同一程序集中,visual-studio,visual-studio-2010,t4,Visual Studio,Visual Studio 2010,T4,我试图通过将代码移出到与我的模板相同的程序集和命名空间中的助手方法来解决T4模板中的程序集引用难题,但T4拒绝找到我的助手方法 助手方法: namespace PocoGenerator { public class EntityReflector { public static IEnumerable<PropertyInfo> GetPropertiesForTemplate() { var baseName

我试图通过将代码移出到与我的模板相同的程序集和命名空间中的助手方法来解决T4模板中的程序集引用难题,但T4拒绝找到我的助手方法

助手方法:

namespace PocoGenerator
{
    public class EntityReflector
    {
        public static IEnumerable<PropertyInfo> GetPropertiesForTemplate()
        {
            var baseNameSpace = "";
            var assemblyName = "DataObjects";
名称空间pogenerator
{
公共类实体引用器
{
公共静态IEnumerable GetPropertiesForTemplate()
{
var baseNameSpace=“”;
var assemblyName=“DataObjects”;
顽固的模板代码:

<# foreach(PropertyInfo prop in PocoGenerator.EntityReflector.GetPropertiesForTemplate()) { #>
public <#= prop.PropertyType #> <#= prop.Name #> {get; set; }
<# } #>

公共{get;set;}

T4的编译环境与项目代码不同,因此需要使用汇编指令加载项目的输出

只要您使用VS2010 SP1,您就不会发现任何程序集锁定问题

然而,这种递归模板有助于生成一个程序集,然后帮助构建该程序集,这种模板可能很脆弱,因为您需要一个二进制版本来引导一个干净的构建


如果可能的话,我会将助手代码移动到一个助手程序集中,该程序集不是已完成项目的一部分,而只是工具集的一部分。

T4与项目代码不在同一上下文中编译,因此您需要使用汇编指令来加载项目的输出

只要您使用VS2010 SP1,您就不会发现任何程序集锁定问题

然而,这种递归模板有助于生成一个程序集,然后帮助构建该程序集,这种模板可能很脆弱,因为您需要一个二进制版本来引导一个干净的构建

如果可能的话,我会将您的助手代码移动到一个助手程序集中,它不是您完成的项目的一部分,而只是您工具集的一部分