2010-08-08 43 views
1

我試圖通過將代碼移入與我的模板相同的程序集和名稱空間中的輔助方法來解決T4模板中的程序集引用問題,但是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; } 
<# } #> 

回答

1

T4是不是在相同的上下文中的項目代碼編譯,所以你需要使用的組件指令來加載你的項目的輸出。

只要你使用VS2010 SP1,你不會發現任何程序集鎖定問題。

但是,這種遞歸模板有助於構建一個可以幫助構建的程序集,因此可能會很脆弱,因爲您需要一個二進制版本來引導乾淨的構建。

如果可能的話,我會將你的幫助程序代碼移入一個不屬於完成項目一部分的幫助程序集,而不是你的工具集的一部分。

相關問題