2014-10-01 5 views
1

Мне нужно знать фактическое имя файла полного файла в проекте. Я использую microsoft.build.evaluation.project, чтобы открыть проект с правильными свойствами, и я попытался использовать свойства TargetPath, TargetDir, TargetFileName, но я не могу найти согласованное свойство, чтобы дать мне имя выходного файла с помощью пути , В некоторых проектах это работает, а в некоторых - нет. Я работаю как с файлами csproj, так и с файлами vcxproj.Как получить фактический выход проекта с помощью microsoft.build.evaluation.project в C#

ответ

2

Выходной путь связан с папкой проекта. Вы можете получить его значение из файла проекта через свойство OutputPath (предположим project является экземпляром Microsoft.Build.Evaluation.Project)

var outputPath = project.GetPropertyValue("OutputPath") 

Затем вы можете использовать Path.Combine конкатенировать свой путь вывода и папку проекта

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

В дополнение к ответу Ask:

Если вам нужно получить OutputPath для какой-либо другой конфигурации, кроме текущей (например, Release Release), вы должны сделать следующее:

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

или

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