diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets index 4195d5e4a6e..01f4be7ed22 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets @@ -10,7 +10,8 @@ _ResolveAssemblies MSBuild target. - + + $(_OuterOutputPath) @@ -157,4 +158,15 @@ _ResolveAssemblies MSBuild target. + + + <_ResolvedNativeLibraries Include="@(ResolvedFileToPublish)" Condition=" '%(ResolvedFileToPublish.Extension)' == '.so' " /> + + + + + + diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx index e61481af702..94afbdb9779 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx @@ -661,6 +661,12 @@ The following are literal names and should not be translated: ABI, 'libs/armeabi Cannot determine ABI of native library '{0}'. Move this file to a directory with a valid Android ABI name such as 'libs/armeabi-v7a/'. The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library Could not determine ABI of some native libraries. Ignoring those: {0} diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.cs.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.cs.xlf index 4d06f645bbd..89758e91cd3 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.cs.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.cs.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.de.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.de.xlf index bf10d050d47..e8842a503a9 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.de.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.de.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.es.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.es.xlf index eb65dc7bb16..7891fde05f0 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.es.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.es.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.fr.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.fr.xlf index 4a63a6a6cd2..0db56b97c2e 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.fr.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.fr.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.it.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.it.xlf index 61cdf85c413..bb577873790 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.it.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.it.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ja.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ja.xlf index 81a53fcbf70..1c298b192c0 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ja.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ja.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ko.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ko.xlf index 6dbe735757b..1217ee0f137 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ko.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ko.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pl.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pl.xlf index 5affac978b1..f1458e19045 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pl.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pl.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pt-BR.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pt-BR.xlf index 7f7e09a323a..78508db3557 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pt-BR.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.pt-BR.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ru.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ru.xlf index 353f846e7f0..03d949606de 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ru.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.ru.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.tr.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.tr.xlf index bf296982d65..e6c7afb59b1 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.tr.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.tr.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hans.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hans.xlf index 6c5f1fba528..f95f935c730 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hans.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hans.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hant.xlf b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hant.xlf index b20dc32b30c..a41cf9bd506 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hant.xlf +++ b/src/Xamarin.Android.Build.Tasks/Properties/xlf/Resources.zh-Hant.xlf @@ -64,6 +64,13 @@ The capitalized word "Portable" that appears earlier in the message is plain tex In this message, the term "bundled" is a short way of saying "included into the final application package." The following are literal names and should not be translated: ABI, 'libs/armeabi-v7a/' {0} - The file path + + + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author. + The following are literal names and should not be translated: ABI, NuGet +{0} - The native library file path +{1} - Either the name of the NuGet package or a path to the native library diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ProcessNativeLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ProcessNativeLibraries.cs new file mode 100644 index 00000000000..67f6e95612c --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ProcessNativeLibraries.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Build.Framework; + +namespace Xamarin.Android.Tasks +{ + /// + /// Processes .so files coming from @(ResolvedFileToPublish). + /// * Checks if ABI is valid + /// * Fixes up libmonodroid.so based on $(AndroidIncludeDebugSymbols) + /// + public class ProcessNativeLibraries : AndroidTask + { + public override string TaskPrefix => "PRNL"; + + /// + /// Assumed to be .so files only + /// + public ITaskItem [] InputLibraries { get; set; } + + public bool IncludeDebugSymbols { get; set; } + + [Output] + public ITaskItem [] OutputLibraries { get; set; } + + public override bool RunTask () + { + if (InputLibraries == null || InputLibraries.Length == 0) + return true; + + var output = new List (InputLibraries.Length); + + foreach (var library in InputLibraries) { + var abi = MonoAndroidHelper.GetNativeLibraryAbi (library); + if (string.IsNullOrEmpty (abi)) { + var packageId = library.GetMetadata ("NuGetPackageId"); + if (!string.IsNullOrEmpty (packageId)) { + Log.LogCodedWarning ("XA4301", library.ItemSpec, 0, Properties.Resources.XA4301_ABI_NuGet, library.ItemSpec, packageId); + } else { + Log.LogCodedWarning ("XA4301", library.ItemSpec, 0, Properties.Resources.XA4301_ABI, library.ItemSpec); + } + continue; + } + // Both libmono-android.debug.so and libmono-android.release.so are in InputLibraries. + // Use IncludeDebugSymbols to determine which one to include. + // We may eventually have files such as `libmono-android-checked+asan.release.so` as well. + var fileName = Path.GetFileNameWithoutExtension (library.ItemSpec); + if (fileName.StartsWith ("libmono-android", StringComparison.Ordinal)) { + if (fileName.EndsWith (".debug", StringComparison.Ordinal)) { + if (!IncludeDebugSymbols) + continue; + library.SetMetadata ("ArchiveFileName", "libmonodroid.so"); + } else if (fileName.EndsWith (".release", StringComparison.Ordinal)) { + if (IncludeDebugSymbols) + continue; + library.SetMetadata ("ArchiveFileName", "libmonodroid.so"); + } + } + output.Add (library); + } + + OutputLibraries = output.ToArray (); + + return !Log.HasLoggedErrors; + } + } +} diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs index 8ab33883574..dd745499009 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs @@ -3882,6 +3882,9 @@ public void AbiNameInIntermediateOutputPath () using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { Assert.IsTrue (b.Build (proj), "Build should have succeeded."); Assert.IsFalse (StringAssertEx.ContainsText (b.LastBuildOutput, Path.Combine ("armeabi", "libe_sqlite3.so")), "Build should not use `armeabi`."); + if (Builder.UseDotNet) { + StringAssertEx.Contains ("warning XA4301", b.LastBuildOutput, "Should get a XA4301 warning"); + } } } diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 5e162980d77..acbfb98bc3e 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1816,69 +1816,6 @@ because xbuild doesn't support framework reference assemblies. - - - <_Assemblies>@(_ResolvedFrameworkAssemblies) - <_TargetInterpreterPrefix Condition=" '$(_AndroidUseInterpreter)' != 'False' ">interpreter- - <_AndroidDebugNativeLibraries Condition=" '$(_AndroidDebugNativeLibraries)' == '' ">False - - - <_TargetArchitecture Include="$(_Android32bitArchitectures);$(_Android64bitArchitectures)" /> - - - <_TargetLibDir Include="$(MSBuildThisFileDirectory)lib\%(_TargetArchitecture.Identity)" Condition=" Exists('$(MSBuildThisFileDirectory)lib\%(_TargetArchitecture.Identity)') "/> - <_TargetLibInterpreterDir Include="$(MSBuildThisFileDirectory)lib\$(_TargetInterpreterPrefix)%(_TargetArchitecture.Identity)" Condition=" Exists('$(MSBuildThisFileDirectory)lib\$(_TargetInterpreterPrefix)%(_TargetArchitecture.Identity)') "/> - - - - - - - - - - - - - <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' " Include="%(_TargetLibInterpreterDir.Identity)\libmono-native.so" /> - <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' And '$(_AndroidCheckedBuild)' == '' " Include="%(_TargetLibDir.Identity)\libxamarin-debug-app-helper.so" /> - <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' And '$(_AndroidCheckedBuild)' != '' " Include="%(_TargetLibDir.Identity)\libxamarin-debug-app-helper-checked+$(_AndroidCheckedBuild).so" ArchiveFileName="libxamarin-debug-app-helper.so" /> - - - - - - - - - - - - - - - - - - - - - - <_NativeAssemblyTarget Include="@(_TypeMapAssemblySource->'$([System.IO.Path]::ChangeExtension('%(Identity)', '.o'))')"> diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Legacy.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Legacy.targets index 0d1cbf630c0..01333897e8b 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Legacy.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Legacy.targets @@ -492,6 +492,44 @@ projects. .NET 5 projects will not import this file. + + + <_Assemblies>@(_ResolvedFrameworkAssemblies) + <_TargetInterpreterPrefix Condition=" '$(_AndroidUseInterpreter)' != 'False' ">interpreter- + <_AndroidDebugNativeLibraries Condition=" '$(_AndroidDebugNativeLibraries)' == '' ">False + + + + + + <_TargetArchitecture Include="$(_Android32bitArchitectures);$(_Android64bitArchitectures)" /> + <_TargetLibDir Include="$(MSBuildThisFileDirectory)lib\%(_TargetArchitecture.Identity)" Condition=" Exists('$(MSBuildThisFileDirectory)lib\%(_TargetArchitecture.Identity)') "/> + <_TargetLibInterpreterDir Include="$(MSBuildThisFileDirectory)lib\$(_TargetInterpreterPrefix)%(_TargetArchitecture.Identity)" Condition=" Exists('$(MSBuildThisFileDirectory)lib\$(_TargetInterpreterPrefix)%(_TargetArchitecture.Identity)') "/> + + + + + + + + <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' " Include="%(_TargetLibInterpreterDir.Identity)\libmono-native.so" /> + <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' And '$(_AndroidCheckedBuild)' == '' " Include="%(_TargetLibDir.Identity)\libxamarin-debug-app-helper.so" /> + <_AndroidNativeLibraryForFastDev Condition=" '$(_InstantRunEnabled)' == 'True' And '$(AndroidUseDebugRuntime)' == 'True' And '$(_AndroidCheckedBuild)' != '' " Include="%(_TargetLibDir.Identity)\libxamarin-debug-app-helper-checked+$(_AndroidCheckedBuild).so" ArchiveFileName="libxamarin-debug-app-helper.so" /> + + + + + + + + + + + + + + + <_PrepareAssembliesDependsOnTargets> _ResolveAssemblies;