2012-08-11 34 views
0

鑑於以下TT宏:如何從宏TT引用裝配

<#@ template debug="false" hostspecific="true" language="C#" #> 
<#@ output extension=".xml" #> 
<#@ assembly name="$(TargetPath)" #> 
<#@ import namespace="System.Reflection" #> 
<# 
AssemblyInfoHelper assemblyInfo = new AssemblyInfoHelper(Assembly.LoadFrom(@"H:\My Projects\TestApp\bin\Windows Phone\Debug\TestApp.dll")); 
#> 
<?xml version="1.0" encoding="utf-8"?> 
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0"> 
... 
</Deployment> 

...我想加載使用$(TARGETPATH)內容組裝,而不是硬編碼組件的全路徑......這可能嗎?

任何幫助,非常感謝:-)

感謝 J3D

+0

在此處討論了一些解決方法/示例:http://weblogs.asp.net/lhunt/archive/2010/05/04/t4-template-error-assembly-directive-cannot-locate-referenced- assembly-in-visual-studio-2010-project.aspx ...認爲你需要使用類似於「$(TargetDir)MyAssembly.dll」的文件 – 2012-08-11 19:51:57

+0

<#@程序集名稱=「$(TargetPath)」#>已經包含需要引用的程序集的完整路徑...我正在尋找的是一種方法來替換指令下面代碼中的硬編碼路徑:Assembly.LoadFrom(@「H:\ My Projects \ TestApp \ bin \ Windows Phone \ Debug \ TestApp.dll「)應該是像Assembly.LoadFrom(」$(TargetPath)「) - 當然,這是行不通的:-( – j3d 2012-08-11 22:30:44

+0

也許使用VCConfiguration.Evaluate .... http:///msdn.microsoft.com/en-us/library/microsoft.visualstudio.vcprojectengine.vcconfiguration.evaluate.aspx .... http://stackoverflow.com/ques tions/8477011/how-to-get-expanded-path-from-envdte-vcprojectengine .....或訪問DTE接口..... http://stackoverflow.com/questions/3408159/using-types- t4-template-that-exist-in-the-the-project-as-the-template – 2012-08-11 22:43:48

回答

0

如果您已經加載的組件,使用$(TARGETPATH)語法彙編指令,那麼你可以選擇從類型裝配,做一個typeof(Foo)並從那裏進入反射圖,而不是再次引用路徑。

+0

這是我第一次嘗試...但我總是得到以下錯誤: 錯誤正在運行轉換:System.ArgumentNullException:值不能爲空。 參數名稱:在Microsoft.VisualStudio.TextTemplatingCA318D3CFBFC9BADB1A4FE595511DFB9.GeneratedTextTransformation.TransformText() 在System.Reflection.Assembly.GetAssembly(類型類型)類型 在Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession會話,字符串源,ITextTemplatingEngineHost主機,字符串和結果)\t 1 – j3d 2012-08-13 20:21:34