我正在使用Roslyn使用MsBuildWorkspace
编译包含多个项目的C#解决方案。
很容易找到Project
的输出文件,因为我可以使用OutputFilePath
属性。
但我无法找到找出'intermediate'目录的方法(通常这是'obj'目录,但可以使用MSBuild属性BaseIntermediateOutputPath
和IntermediateOutputPath
进行更改。 csproj
文件。)
有没有人知道如何做到这一点?
答案 0 :(得分:3)
您可以使用Microsoft.Build.Evaluation.Project
中的Microsoft.Build.dll
获取项目属性:
void foo(String projectPath, IDictionary<String, String> globalProperties, String toolsVersion)
{
Project project = new Project(projectPath, globalProperties, toolsVersion);
String baseIntermediateOutputPath = GetProjectProperty(project, "BaseIntermediateOutputPath");
String intermediateOutputPath = GetProjectProperty(project, "IntermediateOutputPath");
// ....
}
static String GetProjectProperty(Microsoft.Build.Evaluation.Project project, String propertyName)
{
return project.Properties
.FirstOrDefault(prop => String.Equals(prop.Name, propertyName, StringComparison.OrdinalIgnoreCase))
?.EvaluatedValue;
}