* Update dependencies from https://github.com/dotnet/installer build 20210824.34
Microsoft.Dotnet.Sdk.Internal
From Version 6.0.100-rc.2.21423.21 -> To Version 6.0.100-rc.2.21424.34
* Update dependencies from https://github.com/dotnet/installer build 20210825.12
Microsoft.Dotnet.Sdk.Internal
From Version 6.0.100-rc.2.21423.21 -> To Version 6.0.100-rc.2.21425.12
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
Context: https://github.com/xamarin/yaml-templates/pull/131
Enables conversion and archiving of symbol files during the VS insertion
stage. Symbol archiving steps will only run if both the
`symbolArtifactName` parameter is provided, and `archiveSymbols` is set
to true. The `symbolConversionFilters` parameter can be used to filter
out paths of symbol files that should not be converted/archived.
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
This fixes an issue where the html report wouldn't show test failures from
timestamped logs (which is the case for macOS test logs).
Also remove a duplicated condition.
How we create the app manifest (Info.plist) has to be modified so that we can
add support for getting all the values from MSBuild properties (i.e. no
Info.plist in the project), as well as having multiple partial app manifests
that all get merged into the final app manifest.
Here's the new process:
1. The user can specify values in multiple ways:
* An Info.plist in their project file (as always, by using a `None` item
with filename "Info.plist" or with a `Link` metadata with filename
"Info.plist"). We find this Info.plist in the DetectAppManifest target.
* A partial plist in their project (using the `PartialAppManifest` item
group)
* Some MSBuild properties can also add values.
The general precedence is: MSBuild properties can be overridden by the
Info.plist, which can be overridden by a partial plist.
2. In the `CompileAppManifest` target we get all the inputs from above, and
compute a temporary app manifest, which is written to a temporary output
file.
3. In the `ReadAppManifest` target, we read the temporary output file and
outputs numerous MSBuild properties (most of them private)
4. We run other targets that may add more entries to the final app manifest
(these tasks might depend on the values from `ReadAppManifest`). These
entries are written to partial plists, and added to the
_PostCompilePartialAppManifest item group.
Currently the targets that can add more entries to the app manifest are
_CompileImageAssets and _CompileCoreMLModels.
5. In the new `WriteAppManifest` target, we read the temporary output file
from `ReadAppManifest` + any `_PostCompilePartialAppManifest` files and
merge them all together to get the final Info.plist.
This also required moving the computation of CFBundleIdentifier from the
DetectSigningIdentity task to the CompileAppManifest task, which also meant
reordering these two tasks, so that the DetectSigningIdentity task is executed
after the CompileAppManifest task (technically after the ReadAppManifest
task), because the DetectSigningIdentity task needs to know the bundle
identifier.
Commit c272040 started pushing both nupkgs and msis to the dotnet6 feed,
however the job dependency was not updated. Since the "Push NuGets" job
consumes packages created by the "Convert NuGet to MSI" job, it must
depend on it.
The `templates/release/vs-insertion-prep.yml` template which includes
package signing and feed publishing should only run against official
branches. The condition has been updated to check the branch name for
`main` or `release/` before running.
## Coherency Updates
The following updates ensure that dependencies with a *CoherentParentDependency* attribute were produced in a build used as input to the parent dependency's build.
See [Dependency Description Format](https://github.com/dotnet/arcade/blob/master/Documentation/DependencyDescriptionFormat.md#dependency-description-overview)
- **Coherency Updates**:
- **Microsoft.NET.ILLink.Tasks**: from 6.0.100-preview.6.21416.1 to 6.0.100-preview.6.21419.1 (parent: Microsoft.Dotnet.Sdk.Internal)
## From https://github.com/dotnet/installer
- **Subscription**: df3e6147-3e41-4928-6775-08d8f479343c
- **Build**: 20210823.21
- **Date Produced**: 8/24/2021 12:53 AM
- **Commit**: 5f5d8bb4a209810fb93c86ce6b0b3172bd909134
- **Branch**: refs/heads/release/6.0.1xx
- **Updates**:
- **Microsoft.Dotnet.Sdk.Internal**: [from 6.0.100-rc.1.21417.3 to 6.0.100-rc.2.21423.21][1]
- **Microsoft.NET.ILLink.Tasks**: [from 6.0.100-preview.6.21416.1 to 6.0.100-preview.6.21419.1][2]
[1]: 8c86609...5f5d8bb
[2]: 5b2391c...5851f6d
Microsoft.Dotnet.Sdk.Internal
From Version 6.0.100-rc.1.21417.3 -> To Version 6.0.100-rc.2.21423.21
Dependency coherency updates
Microsoft.NET.ILLink.Tasks
From Version 6.0.100-preview.6.21416.1 -> To Version 6.0.100-preview.6.21419.1 (parent: Microsoft.Dotnet.Sdk.Internal
We store the macOS version in the Info.plist, and use the iOS version for the MinimumOSVersion
MSBuild variable.
This means that in ReadAppManifest we must convert the min OS version from the Info.plist
from a macOS version to an iOS version (and not do it in CompileAppManifest).
Also add support for the iOS version in the Info.plist for Mac Catalyst, and automatically
convert it to the corresponding macOS version.
* [net6] Bumps Xamarin Hot Restart to 1.0.70
This version contains fixes for building Maui projects with Hot Restart
* [msbuild] Fixes Hot Restart Entitlements.plist compilation
The build was failing if `CodesignEntitlements` was not set, even though the CompileEntitlements task has a default value. That default value is not compatible with Hot Restart because it is a template file that exists on the Mac (and Hot Restart is an offline build from Windows).
So if that property is not set we get the xcent file from the Hot Restart PreBuilt app bundle, which is essentially an empty plist.
* [net6] Makes Hot Restart consider Single Project app title
On a Maui Single Project the app title can be set on the project file using the `ApplicationTitle` property. If that's set Hot Restart should include that value in the compiled app manifest, so the app name is shown on the device when the app is deployed.
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
HttpClientHandler will use reflection to call the underlying handler, for all
the properties it supports. This means that if those properties don't exist in
NSUrlSessionHandler, the developer will get unhelpful NullReferenceExceptions
instead of PlatformNotSupportedExceptions.
Example test failure:
HttpClient: AutomaticDecompression
Expected: <System.PlatformNotSupportedException>
But was: <System.NullReferenceException: Object reference not set to an instance of an object
at System.Net.Http.HttpClientHandler.InvokeNativeHandlerMethod(String , Object[] )
at System.Net.Http.HttpClientHandler.GetAutomaticDecompression()
at System.Net.Http.HttpClientHandler.get_AutomaticDecompression()
at LinkSdk.Net.Http.HttpClientHandlerTest.<>c__DisplayClass0_0.<HttpClient>b__0() in /Users/rolf/work/maccore/6.0.1xx-rc.1/xamarin-macios/tests/linker/ios/link sdk/HttpClientHandlerTest.cs:line 31
at NUnit.Framework.Assert.Throws(IResolveConstraint expression, TestDelegate code, String message, Object[] args)>
It also fixes numerous linker warnings such as:
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetAutomaticDecompression(): No members were resolved for 'get_AutomaticDecompression'.
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetCheckCertificateRevocationList(): No members were resolved for 'get_CheckCertificateRevocationList'.
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetClientCertificateOptions(): No members were resolved for 'get_ClientCertificateOptions'.
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetClientCertificates(): No members were resolved for 'get_ClientCertificates'.
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetDefaultProxyCredentials(): No members were resolved for 'get_DefaultProxyCredentials'.
ILLink : warning IL2037: System.Net.Http.HttpClientHandler.GetMaxAutomaticRedirections(): No members were resolved for 'get_MaxAutomaticRedirections'.
[...]
How we create the app manifest (Info.plist) has to be modified so that we can add
support for getting all the values from MSBuild properties (i.e. no Info.plist in
the project), as well as having multiple partial app manifests as well, that gets
merged into the final app manifest.
Here's the new process:
1. The user can specify values in multiple ways:
* An Info.plist in their project file (by using a `None` item with
filename "Info.plist" or with a `Link` metadata with filename
"Info.plist"). We figure this out in the DetectAppManifest target.
* A partial plist in their project (using the `PartialAppManifest` item group)
* Some MSBuild properties can also add values.
The precedence is: MSBuild properties can be overridden by the Info.plist,
which can be overridden by a partial plist.
2. In the `CompileAppManifest` target we get all the inputs from above, and compute
a temporary app manifest, which is written to a temporary output file.
3. In the `ReadAppManifest` target, we read the temporary output file and outputs
numerous MSBuild properties (most of then private)
4. We run other targets that may add more entries to the final app manifest (these
tasks might depend on the values from `ReadAppManifest`). These entries are written
to partial plists, and added to the _PostCompilePartialAppManifest item group.
The targets in question are:
* _CompileImageAssets * _CompileCoreMLModels
5. In the new `WriteAppManifest` target, we read the temporary output file from `ReadAppManifest`
+ any `_PartialAppManfiest` items and merge them all together to get the final Info.plist.
This also required moving the computation of CFBundleIdentifier from the DetectSigningIdentity
task to the CompileAppManifest task. This also meant reordering these two tasks,
so that the DetectSigningIdentity task is executed after the CompileAppManifest task
(technically after the ReadAppManifest task), because the DetectSigningIdentity task
needs to know the bundle identifier.
This way we can handle multiple scenarios easily (most of this is not covered by
these changes, and will be implemented separately):
* No Info.plist at all, all non-default values come from MSBuild properties.
* A single Info.plist, where everything is specified.
* An Info.plist with multiple partial app manifests as well.
The '_AssignWatchAppConfiguration' target's condition refers to an item group
that is created by '_SeparateWatchAppReferences', which means that we must
ensure that the '_SeparateWatchAppReferences' target is executed before the
'_AssignWatchAppConfiguration' target