[build] Properly implement "parent directory.override.props" (#300) #873
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Commit 8898bc1 put too much faith into
$(MSBuildProjectDirectory)). The problem is that
$(MSBuildProjectDirectory)*isn't necessarily* the path to
Directory.Build.props; it's the directory for the
.csproj` being built!The intent for 8898bc1 is that e.g.
xamarin/xamarin-android
should be able to create a
Java.Interop.override.props
filealongside the
Java.Interop
git submodule, and the Java.Interopbuild would use the overrides within
Java.Interop.override.props
.That didn't happen; due to using
$(MSBuildProjectDirectory)
, thebuild may instead attempting to import e.g.
Java.Interop/src/Java.Interop.override.props
!Oops.
Fix the
<Import/>
expressions so that we instead try to import:We need
$(MSBuildThisFileDirectory)
, as that's the easiest way toget the checkout directory -- the directory containing
Directory.Build.props
-- but$(MSBuildThisFileDirectory)
alwaysends in a directory separator character. Remove the directory
separator character by using
Path.GetDirectoryName()
.This allows e.g. the
Java.Interop.csproj
build to appropriatelyimport
Java.Interop.override.props
.