如何使用c#中的microsoft.build.evaluation.project获取实际项目输出

时间:2014-10-01 10:56:11

标签: c#-4.0 project csproj vcxproj

我需要知道项目中的实际输出文件名完整路径。 我使用microsoft.build.evaluation.project打开一个具有正确属性的项目,我尝试使用属性TargetPath,TargetDir,TargetFileName,但我找不到一致的属性来给我带路径的输出文件名。 在某些项目中它起作用,而在某些项目中它不起作用。我在csproj文件和vcxproj文件上工作。

2 个答案:

答案 0 :(得分:2)

输出路径与项目文件夹相关。您可以通过属性OutputPath从项目文件中获取其值(假设projectMicrosoft.Build.Evaluation.Project的实例)

var outputPath = project.GetPropertyValue("OutputPath")

然后,您可以使用Path.Combine来连接输出路径和项目文件夹

var fullpath =  Path.Combine(projectDirectory, outputPath);

答案 1 :(得分:1)

除了Ask的回答:

如果您需要为当前配置(例如Release)之外的其他配置获取OutputPath,则应该执行下一步:

project.SetProperty("Configuration", "Release");
project.ReevaluateIfNecessary();
var outputPath = project.GetPropertyValue("OutputPath");

ProjectCollection.GlobalProjectCollection.SetGlobalProperty("Configuration", "Release");
load project
var outputPath = project.GetPropertyValue("OutputPath");