diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets
index 8d19b2128da..f5b225179bb 100644
--- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets
+++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets
@@ -20,6 +20,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
+
False
@@ -142,15 +143,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
-
- <_ErrorItems Include="@(_MonoAndroidReferencePath)" Condition=" '%(_MonoAndroidReferencePath.HasResourceDesignerAssemblyReference)' == 'True' "/>
- <_ErrorItems Include="@(_MonoAndroidReferenceDependencyPaths)" Condition=" '%(_MonoAndroidReferenceDependencyPaths.HasResourceDesignerAssemblyReference)' == 'True' "/>
-
-
+
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs
index 9ab1d323596..ffd28e90201 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs
@@ -35,11 +35,6 @@ public override bool RunTask ()
foreach (var item in Inputs) {
var fn = Path.GetFileNameWithoutExtension (item.ItemSpec);
output.Add (item);
- var md = item.GetMetadata ("HasResourceDesignerAssemblyReference");
- if (string.IsNullOrEmpty (md)) {
- var b = MonoAndroidHelper.HasResourceDesignerAssemblyReference (item);
- item.SetMetadata ("HasResourceDesignerAssemblyReference", MonoAndroidHelper.HasResourceDesignerAssemblyReference (item).ToString ());
- }
List metaDataList;
if (!metaData.TryGetValue (fn, out metaDataList))
continue;
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs
new file mode 100644
index 00000000000..cd589a58251
--- /dev/null
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs
@@ -0,0 +1,56 @@
+using Microsoft.Android.Build.Tasks;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using System.Reflection.Metadata;
+using System.Reflection.PortableExecutable;
+using System.IO;
+
+namespace Xamarin.Android.Tasks
+{
+ ///
+ /// Emits XA1034 is an assembly has a reference to _Microsoft.Android.Resource.Designer.dll
+ /// * NOTE: only called when $(AndroidUseDesignerAssembly) is false
+ ///
+ public class CheckForInvalidDesignerConfig : AndroidTask
+ {
+ public override string TaskPrefix => "CIRF";
+
+ public ITaskItem[] Assemblies { get; set; }
+
+ public override bool RunTask ()
+ {
+ if (Assemblies == null)
+ return true;
+
+ foreach (var assembly in Assemblies) {
+ if (HasResourceDesignerAssemblyReference (assembly)) {
+ Log.LogCodedError ("XA1034", Properties.Resources.XA1034, assembly);
+ }
+ }
+
+ return !Log.HasLoggedErrors;
+ }
+
+ static bool HasResourceDesignerAssemblyReference (ITaskItem assembly)
+ {
+ if (!File.Exists (assembly.ItemSpec)) {
+ return false;
+ }
+ using var pe = new PEReader (File.OpenRead (assembly.ItemSpec));
+ var reader = pe.GetMetadataReader ();
+ return HasResourceDesignerAssemblyReference (reader);
+ }
+
+ static bool HasResourceDesignerAssemblyReference (MetadataReader reader)
+ {
+ foreach (var handle in reader.AssemblyReferences) {
+ var reference = reader.GetAssemblyReference (handle);
+ var name = reader.GetString (reference.Name);
+ if (string.CompareOrdinal (name, "_Microsoft.Android.Resource.Designer") == 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs
index 19088a10f6b..acd5230b39b 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs
@@ -325,28 +325,6 @@ public static bool HasMonoAndroidReference (MetadataReader reader)
return false;
}
- public static bool HasResourceDesignerAssemblyReference (ITaskItem assembly)
- {
- if (!File.Exists (assembly.ItemSpec)) {
- return false;
- }
- using var pe = new PEReader (File.OpenRead (assembly.ItemSpec));
- var reader = pe.GetMetadataReader ();
- return HasResourceDesignerAssemblyReference (reader);
- }
-
- public static bool HasResourceDesignerAssemblyReference (MetadataReader reader)
- {
- foreach (var handle in reader.AssemblyReferences) {
- var reference = reader.GetAssemblyReference (handle);
- var name = reader.GetString (reference.Name);
- if (string.CompareOrdinal (name, "_Microsoft.Android.Resource.Designer") == 0) {
- return true;
- }
- }
- return false;
- }
-
public static bool IsReferenceAssembly (string assembly)
{
using (var stream = File.OpenRead (assembly))