[英]Determine solution configuration (debug/release) when running a T4 template to include assembly in the solution
我試圖讓我的T4模板以實用的方式在我的解決方案中引用我的程序集,這樣當我在調試和發布之間更改配置時,它將包括我的解決方案中的正確程序集。
這是我嘗試過的:
<#
// Figured out how to get the current Configuration
var serviceProvider = Host as IServiceProvider;
var dte = serviceProvider.GetService(typeof(DTE)) as DTE;
string ConfigName = dte.Solution.SolutionBuild.ActiveConfiguration.Name;
// I have verified that I am getting the strings "Debug", and "Release"
if (configName == "Debug") {
#>
<#@ include file="template.Debug.tt" #>
<# } else { #>
<#@ include file="template.Release.tt" #>
<# } #>
template.Debug.tt文件如下所示:
<#@ Assembly
name="$(SolutionDir)TestProject.Core/bin/Debug/TestProject.Core.dll"#>
而template.Release.tt文件如下所示:
<#@ Assembly
name="$(SolutionDir)TestProject.Core/bin/Release/TestProject.Core.dll"#>
當我嘗試運行主T4時,我收到此錯誤:
錯誤1編譯轉換:已導入具有相同簡單名稱“TestProject.Core”,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null的程序集。 嘗試刪除其中一個引用或簽名以並排啟用。
我猜測預處理器處理程序集include行,因為它沿着兩個執行路徑發生,導致兩個程序集都被引用。
試過這個:
<#@ Assembly
name="$(SolutionDir)TestProject.Core/bin/$(Configuration)/TestProject.Core.dll"#>
有沒有辦法添加$(配置)? 這似乎是最合乎邏輯的選擇
其他人似乎只是在他們的路徑中硬編碼Debug。
在調試時引用錯誤的DLL而不知道它是非常煩人的,並且在將代碼發布到生產環境時無法順利進行。
一個想法是您的T4支持DLL可以被認為是構建環境的一部分,因此Debug / Relase不適用。
對於支持dll,更改所有配置的構建路徑,例如$(SolutionDir)\\ BuildArtifacts並在T4文件中引用該位置。
希望這可以幫助
PS。 我所做的(雖然我知道我是少數)是因為部分原因而避免使用T4支持dll而只是將所有內容寫成T4“腳本”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.