Skip to content

Commit 494759c

Browse files
jonpryorjpobst
authored andcommitted
[build] Properly implement "parent directory.override.props" (#300) (#873)
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` file alongside the `Java.Interop` git submodule, and the Java.Interop build would use the overrides within `Java.Interop.override.props`. That didn't happen; due to using `$(MSBuildProjectDirectory)`, the build may instead attempting to import e.g. `Java.Interop/src/Java.Interop.override.props`! Project "$(MSBuildProjectDirectory).override.props" was not imported by "…/external/Java.Interop/Directory.Build.props" at (6,3), due to false condition; (Exists('$(MSBuildProjectDirectory).override.props')) was evaluated as (Exists('…/xamarin-android/external/Java.Interop/src/Java.Interop.override.props')). Oops. Fix the `<Import/>` expressions so that we instead try to import: $([System.IO.Path]::GetDirectoryName($(MSBuildThisFileDirectory))).override.props We need `$(MSBuildThisFileDirectory)`, as that's the easiest way to get the checkout directory -- the directory containing `Directory.Build.props` -- but `$(MSBuildThisFileDirectory)` always ends in a directory separator character. Remove the directory separator character by using `Path.GetDirectoryName()`. This allows e.g. the `Java.Interop.csproj` build to appropriately import `Java.Interop.override.props`.
1 parent f27956c commit 494759c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
Condition="Exists('$(MSBuildThisFileDirectory)Configuration.Override.props')"
1818
/>
1919
<Import
20-
Project="$(MSBuildProjectDirectory).override.props"
21-
Condition="Exists('$(MSBuildProjectDirectory).override.props')"
20+
Project="$([System.IO.Path]::GetDirectoryName($(MSBuildThisFileDirectory))).override.props"
21+
Condition=" Exists('$([System.IO.Path]::GetDirectoryName($(MSBuildThisFileDirectory))).override.props') "
2222
/>
2323
<Import
2424
Project="$(_OutputPath)JdkInfo.props"

0 commit comments

Comments
 (0)