Itiviti / gradle-msbuild-plugin

Gradle plugin for msbuild execution, supports C# project files for now
Apache License 2.0
101 stars 57 forks source link

Solution parsed multiple time when projectName is not found. #21

Closed lugoues closed 9 years ago

lugoues commented 9 years ago

Is the source code for these two executables available?

gluck commented 9 years ago

Pretty nicely hidden there: https://github.com/gluck/mono/tree/projectparser/mcs/class/ProjectFileParser

mono version is built against mono version of Microsoft.Build libs (and repacked with its deps), windows version is built with std microsoft versions (and repacked).

This needs to be cleaned up definitely.

lugoues commented 9 years ago

Thanks! I am attempting to see why it takes 2+ minutes to parse our large solution file. Maybe even add an option to not parse the projectfile if there is no way to speed it up.

gluck commented 9 years ago

not parsing the project file will limit a lot the usage of the plugin (no knowledge of inputs/ouputs), lots of duplication.

Maybe the JSON output is what takes ages ? (under windows we're using the same parser MSBUILD itself must be using)

lugoues commented 9 years ago

I see the problem. I want to build the entire solution but Msbuild.groovy:129 requires a project name to select a single project from the solution to target for the projectParsed variable. In the end though, the output of a single project is not enough "output" when you are attempting to build the entire solution, is it?

But since Msbuild.groovy:129 returns null, since the solution name isn't the name of a project in the solution. Because of this null value, it ends up calling the ProjectParser 6 times.

gluck commented 9 years ago

I see, yes we need to identify the (main) project you want to build out of the solution. Don't think there's a way to fix that, and it wouldn't make sense to consider the outputs of all projects (I think).

Definitely the code should be more informative and either cache the failure to resolve or warn about the fact, thanks for debugging this through.