我正在使用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)