Skip to content

Commit c75bbfc

Browse files
[Xamarin.Android.Build.Tasks] guard AutoImport.props against empty values (#7837)
There is an email thread about ASP.NET projects in VS, and something is potentially slowing down builds when optional workloads are installed. One concern is our `AutoImport.props`. Consider this example `foo.targets` file: <Project> <ItemGroup> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.xml" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.axml" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.png" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.jpg" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.gif" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.webp" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.ttf" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.otf" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.ttc" /> <AndroidResource Include="$(MonoAndroidResourcePrefix)\raw\*" Exclude="$(MonoAndroidResourcePrefix)\raw\.*" /> <AndroidAsset Include="$(MonoAndroidAssetsPrefix)\**\*" Exclude="$(MonoAndroidAssetsPrefix)\**\.*\**" /> </ItemGroup> <Target Name="Build" /> </Project> In this example `$(MonoAndroidResourcePrefix)` and `$(MonoAndroidAssetsPrefix)` will be blank, so when we build: > msbuild foo.targets -bl … MSBUILD : warning MSB5029: The value "\**\.*\**" of the "Exclude" attribute in element <ItemGroup> in file "foo.targets (13,61)" is a wildcard that results in enumerating all files on the drive, which was likely not intended. Check that referenced properties are always defined. 1 Warning(s) 0 Error(s) Time Elapsed 00:02:45.14 I'm not sure if this is causing an actual problem, but I think it's a good idea to add some safety here. Update `AutoImport.props` to avoid including item groups when `$(MonoAndroidResourcePrefix)` and `$(MonoAndroidAssetsPrefix)` are not set/empty.
1 parent a983fbb commit c75bbfc

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/AutoImport.props

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ https://github.com/dotnet/designs/blob/4703666296f5e59964961464c25807c727282cae/
2222
<Using Include="Android.OS.Bundle" Alias="Bundle" Platform="Android" />
2323
</ItemGroup>
2424

25-
<ItemGroup Condition=" '$(EnableDefaultAndroidItems)' == 'true' and $([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0')) ">
25+
<ItemGroup Condition=" '$(MonoAndroidResourcePrefix)' != '' and
26+
'$(EnableDefaultAndroidItems)' == 'true' and
27+
$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0')) ">
2628
<!-- Default Resource file inclusion -->
2729
<!-- https://developer.android.com/guide/topics/resources/providing-resources -->
2830
<AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.xml" />
@@ -35,8 +37,17 @@ https://github.com/dotnet/designs/blob/4703666296f5e59964961464c25807c727282cae/
3537
<AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.otf" />
3638
<AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.ttc" />
3739
<AndroidResource Include="$(MonoAndroidResourcePrefix)\raw\*" Exclude="$(MonoAndroidResourcePrefix)\raw\.*" />
40+
</ItemGroup>
41+
42+
<ItemGroup Condition=" '$(MonoAndroidAssetsPrefix)' != '' and
43+
'$(EnableDefaultAndroidItems)' == 'true' and
44+
$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0')) ">
3845
<!-- Default Asset file inclusion -->
3946
<AndroidAsset Include="$(MonoAndroidAssetsPrefix)\**\*" Exclude="$(MonoAndroidAssetsPrefix)\**\.*\**" />
47+
</ItemGroup>
48+
49+
<ItemGroup Condition=" '$(EnableDefaultAndroidItems)' == 'true'
50+
and $([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0')) ">
4051
<!-- Default XPath transforms for bindings -->
4152
<TransformFile Include="Transforms*.xml" />
4253
<TransformFile Include="Transforms\**\*.xml" />

0 commit comments

Comments
 (0)