簡體   English   中英

構建期間生成T4代碼,自定義程序集引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM