【问题标题】:How to get actual project output using microsoft.build.evaluation.project in c#如何在 c# 中使用 microsoft.build.evaluation.project 获取实际项目输出
【发布时间】:2016-01-28 15:43:15
【问题描述】:
我需要知道项目中实际的输出文件名完整路径。
我使用 microsoft.build.evaluation.project 打开具有正确属性的项目,并尝试使用属性 TargetPath、TargetDir、TargetFileName,但我找不到一致的属性来为我提供带有路径的输出文件名。
在某些项目中它有效,而在某些项目中则无效。我同时处理 csproj 文件和 vcxproj 文件。
【问题讨论】:
标签:
c#-4.0
project
csproj
vcxproj
【解决方案1】:
输出路径与项目文件夹有关。您可以通过属性OutputPath 从项目文件中获取其值(假设project 是Microsoft.Build.Evaluation.Project 的一个实例)
var outputPath = project.GetPropertyValue("OutputPath")
然后你可以使用 Path.Combine 来连接你的输出路径和项目文件夹
var fullpath = Path.Combine(projectDirectory, outputPath);
【解决方案2】:
除了Ask的回答:
如果您需要为当前配置以外的其他配置获取 OutputPath(例如,Release),您应该执行下一步:
project.SetProperty("Configuration", "Release");
project.ReevaluateIfNecessary();
var outputPath = project.GetPropertyValue("OutputPath");
或
ProjectCollection.GlobalProjectCollection.SetGlobalProperty("Configuration", "Release");
load project
var outputPath = project.GetPropertyValue("OutputPath");