[英]T4 code generation during build, custom assembly reference
我有一個T4模板,可以處理我項目中的幾個.tt文件。 我還有一些我定義的自定義類來幫助代碼轉換過程。
<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>
<#@ assembly name="System.Core.dll" #>
<#@ assembly name="$(TargetDir)\MyDependency.dll" #>
這適用於Visual Studio,我有一個VS宏,它正確定義$(TargetDir)。
現在,我想在構建過程中執行代碼生成過程。 我補充說:
<TransformOnBuild>true</TransformOnBuild>
<OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
<IncludeDslT4Settings>true</IncludeDslT4Settings> <ItemGroup>
<T4ReferencePath Include="$(OutputPath)" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" />
我的構建運行,但我得到:
C:\\ Program Files(x86)\\ MSBuild \\ Microsoft \\ VisualStudio \\ TextTemplating \\ v10.0 \\ Microsoft.TextTemplating.targets(407):主機在嘗試解析程序集引用'$(TargetDir)\\ MyDependency時拋出異常。 DLL”。 轉換不會運行。 拋出以下異常:System.IO.FileLoadException:給定的程序集名稱或代碼庫無效。 (來自HRESULT的異常:0x80131047)System.Reflection.AssemblyName.nInit(RuntimeAssembly&assembly,Boolean forIntrospection,Boolean raiseResolveEvent)位於System.Reflection.AssemblyName.nInit()的Microsoft.VisualStudio.TextTemplating.GlobalAssemblyCacheHelper.GetLocation(String strongName)at at Microsoft.VisualStudio.TextTemplating.ResolveAssemblyReference(String assemblyReference)Microsoft.VisualStudio.TextTemplating.Engine.ResolveAssemblyReferences(ITextTemplatingEngineHost host,TemplateProcessingSession session)中的Microsoft.VisualStudio.TextTemplating.Sdk.Host.GenericTextTemplatingHference。 Line = -1,Column = -1
顯然它不會在Team構建上下文中解析$(TargetDir)
。
我嘗試將TargetDir添加到我的構建配置的屬性組中,但無濟於事。 該值不會傳遞到T4代碼生成器的上下文。
我不想使用環境變量。
如何在Team Build上下文中正確設置$(TargetDir)
?
我沒有看到visual studio定義$(OutputPath)的位置。 你在項目中的項目中嘗試過$(TargetDir)嗎? 然后,您可以從T4文件中的Assembly聲明中刪除$(TargetDir)\\。
我只是通過一系列的可能性來獲得類似工作的東西,今天或明天都會做博客文章。
所以:
<ItemGroup>
<T4ReferencePath Include="$(TargetDir)" />
</ItemGroup>
在你的csproj,和
<#@ assembly name="MyDependency.dll" #>
在你的T4文件中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.