gpt4 book ai didi

c# - 在运行 T4 模板以在解决方案中包含程序集时确定解决方案配置(调试/发布)

转载 作者:行者123 更新时间:2023-11-30 13:00:54 26 4
gpt4 key购买 nike

我正在尝试让我的 T4 模板以一种实用的方式在我的解决方案中引用我的程序集,这样当我在调试和发布之间更改配置时,它将包含来 self 的解决方案的正确程序集。

这是我试过的:

<#
// 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”、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 的程序集。尝试删除其中一个引用或对它们签名以并排启用。

我猜预处理器处理程序集包含行,因为它发生在两个执行路径上,导致两个程序集都被引用。

这个也试过了:

<#@ Assembly 
name="$(SolutionDir)TestProject.Core/bin/$(Configuration)/TestProject.Core.dll"#>

有没有办法添加$(Configuration)?这似乎是最合乎逻辑的选择

其他人似乎只是在他们的路径中硬编码 Debug。

引用错误的 DLL 而不知道它在调试时非常烦人,并且在将代码发布到生产环境时无助于顺利进行。

最佳答案

一个想法是您的 T4 支持 dll 可以被认为是构建环境的一部分,因此调试/发布不适用。

对于支持 dll,将所有配置的构建路径更改为转到例如 $(SolutionDir)\BuildArtifacts 并在 T4 文件中引用该位置。

希望对你有帮助

附言。我所做的(虽然我知道我是少数)是出于部分原因避免使用 T4 支持 dll,而只是将所有内容都写成 T4“脚本”。

关于c# - 在运行 T4 模板以在解决方案中包含程序集时确定解决方案配置(调试/发布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com