【问题标题】:T4 Get Execution File Name of Current SolutionT4 获取当前解决方案的执行文件名
【发布时间】:2017-01-09 10:19:48
【问题描述】:

我正在使用T4 文本模板来生成用于任何C# 项目的C# 类。 但是,现在我需要知道目标项目执行文件名,然后知道配置文件名和...

对于这个工作,我尝试过敲代码,但我认为并不是所有项目都稳定。

<#@ template language="C#" debug="false" hostspecific="true" #>
<#@ assembly name="EnvDTE" #>
<#@ import namespace="EnvDTE" #>
<#@ output extension=".cs" #>

<# 
 IServiceProvider serviceProvider = (IServiceProvider)this.Host;
 var dte = serviceProvider.GetService(typeof(DTE)) as DTE;  
 var solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)"); 
 var projectItem = dte.Solution.FindProjectItem(Host.TemplateFile);
 var vsProject = projectItem.ContainingProject; 
#>

1.<#= System.IO.Path.GetFileName(dte.Solution.FullName) #>
2.<#= solutionsPath  #>
3.<#= this.Host.ResolveParameterValue("-", "-", "projects") #>
4.<#= dte.Solution.FullName #>
5.<#= vsProject.Name #>

结果是:

1.ProjectName.sln
2.D:\MyProject\SolutionDirectory\src\
3.ProjectName1|ProjectName2|ProjectName3
4.D:\MyProject\SolutionDirectory\src\ProjectName.sln
5.ProjectName

请帮我找到一个稳定安全的方法来获取当前项目执行文件名,例如:projectname.exe$(TargetFileName)

【问题讨论】:

标签: c# .net visual-studio t4 texttemplate


【解决方案1】:

试试这个:

ProjectItem projItem = dte.Solution.FindProjectItem(Host.TemplateFile);
Project prj = projItem.ContainingProject;
string outputFileName = prj.Properties.Item("OutputFileName").Value.ToString();

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多