Skip to content

Commit e42680b

Browse files
[One .NET] support latest C# 10 language features
Context: dotnet/sdk#19521 Fixes: #6075 Fixes: #6076 We need to make two sets of changes for C# 10: 1. Support "global usings". Our .NET 6 templates should have no `using` statements at the top of `.cs` files. 2. Use `$(Nullable)` `enable` by default in project templates. To test this, our .NET 6 MSBuild tests use `Nullable=enable` and `ImplicitUsings=enable` by default and do not include `using` statements in `.cs` files. I've made a new `MainActivity.cs` for our .NET 6 MSBuild tests. The "legacy" Xamarin.Android tests will use the original file. Our default `global using` are: global using global::Android.App; global using global::Android.Widget; global using Bundle = global::Android.OS.Bundle; The last one is intentionally not bringing in `Android.OS`, because `Android.OS.Environment` would conflict with `System.Environment`. So `AutoImport.props` should become: <ItemGroup Condition=" '$(TargetPlatformIdentifier)' == 'android' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable') "> <Using Include="Android.App" /> <Using Include="Android.Widget" /> <Using Include="Android.OS.Bundle" Alias="Bundle" /> </ItemGroup> So these items are present at the time `.csproj` files are evaluated. Any templates will add: <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> If users want to configure these settings, they can remove `$(ImplicitUsings)` from the `.csproj` completely or remove specific `@(Using)` items: <ItemGroup> <Using Remove="Android.App" /> </ItemGroup>
1 parent 10335e6 commit e42680b

File tree

20 files changed

+76
-96
lines changed

20 files changed

+76
-96
lines changed

src/Microsoft.Android.Templates/android-activity/Activity1.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
using Android.App;
2-
using Android.OS;
3-
using Android.Runtime;
4-
using Android.Widget;
5-
61
namespace AndroidApp1
72
{
83
[Activity(Label = "@string/app_name", MainLauncher = true)]
94
public class Activity1 : Activity
105
{
11-
protected override void OnCreate(Bundle savedInstanceState)
6+
protected override void OnCreate(Bundle? savedInstanceState)
127
{
138
base.OnCreate(savedInstanceState);
149

src/Microsoft.Android.Templates/android-bindinglib/AndroidBinding1.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
<TargetFramework>net6.0-android</TargetFramework>
44
<SupportedOSPlatformVersion>SUPPORTED_OS_PLATFORM_VERSION</SupportedOSPlatformVersion>
55
<RootNamespace Condition="'$(name)' != '$(name{-VALUE-FORMS-}safe_namespace)'">AndroidBinding1</RootNamespace>
6+
<Nullable>enable</Nullable>
7+
<ImplicitUsings>enable</ImplicitUsings>
68
</PropertyGroup>
79
</Project>

src/Microsoft.Android.Templates/android/AndroidApp1.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44
<SupportedOSPlatformVersion>SUPPORTED_OS_PLATFORM_VERSION</SupportedOSPlatformVersion>
55
<RootNamespace Condition="'$(name)' != '$(name{-VALUE-FORMS-}safe_namespace)'">AndroidApp1</RootNamespace>
66
<OutputType>Exe</OutputType>
7+
<Nullable>enable</Nullable>
8+
<ImplicitUsings>enable</ImplicitUsings>
79
</PropertyGroup>
810
</Project>

src/Microsoft.Android.Templates/android/MainActivity.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
using Android.App;
2-
using Android.OS;
3-
using Android.Runtime;
4-
using Android.Widget;
5-
61
namespace AndroidApp1
72
{
83
[Activity(Label = "@string/app_name", MainLauncher = true)]
94
public class MainActivity : Activity
105
{
11-
protected override void OnCreate(Bundle savedInstanceState)
6+
protected override void OnCreate(Bundle? savedInstanceState)
127
{
138
base.OnCreate(savedInstanceState);
149

src/Microsoft.Android.Templates/androidlib/AndroidLib1.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
<TargetFramework>net6.0-android</TargetFramework>
44
<SupportedOSPlatformVersion>SUPPORTED_OS_PLATFORM_VERSION</SupportedOSPlatformVersion>
55
<RootNamespace Condition="'$(name)' != '$(name{-VALUE-FORMS-}safe_namespace)'">AndroidLib1</RootNamespace>
6+
<Nullable>enable</Nullable>
7+
<ImplicitUsings>enable</ImplicitUsings>
68
</PropertyGroup>
79
</Project>

src/Microsoft.Android.Templates/androidlib/Class1.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System;
2-
31
namespace AndroidLib1
42
{
53
public class Class1

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ https://github.com/dotnet/designs/blob/4703666296f5e59964961464c25807c727282cae/
2020
<_DefaultJavaSourceJarPattern>**\*-source.jar;**\*-sources.jar;**\*-src.jar</_DefaultJavaSourceJarPattern>
2121
</PropertyGroup>
2222

23+
<ItemGroup Condition=" '$(TargetPlatformIdentifier)' == 'android' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable') ">
24+
<Using Include="Android.App" />
25+
<Using Include="Android.Widget" />
26+
<Using Include="Android.OS.Bundle" Alias="Bundle" />
27+
</ItemGroup>
28+
2329
<ItemGroup Condition=" '$(EnableDefaultAndroidItems)' == 'true' ">
2430
<!-- Default Resource file inclusion -->
2531
<!-- https://developer.android.com/guide/topics/resources/providing-resources -->

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/DeviceTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ protected override void CleanupTest ()
6767
{
6868
if (HasDevices && TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Failed &&
6969
TestOutputDirectories.TryGetValue (TestContext.CurrentContext.Test.ID, out string outputDir)) {
70+
Directory.CreateDirectory (outputDir);
7071
string local = Path.Combine (outputDir, "screenshot.png");
7172
string deviceLog = Path.Combine (outputDir, "logcat-failed.log");
7273
string remote = "/data/local/tmp/screenshot.png";

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ public void DotNetNew ([Values ("android", "androidlib", "android-bindinglib")]
204204
Assert.IsTrue (dotnet.New ("android-activity"), "`dotnet new android-activity` should succeed");
205205
Assert.IsTrue (dotnet.New ("android-layout", Path.Combine (dotnet.ProjectDirectory, "Resources", "layout")), "`dotnet new android-layout` should succeed");
206206
Assert.IsTrue (dotnet.Build (), "`dotnet build` should succeed");
207+
dotnet.AssertHasNoWarnings ();
207208
}
208209

209210
[Test]
@@ -513,7 +514,7 @@ public void SupportedOSPlatformVersion ([Values (21, 30)] int minSdkVersion)
513514
};
514515
// Call AccessibilityTraversalAfter from API level 22
515516
// https://developer.android.com/reference/android/view/View#getAccessibilityTraversalAfter()
516-
proj.MainActivity = proj.DefaultMainActivity.Replace ("button.Click", "button.AccessibilityTraversalAfter.ToString ();\nbutton.Click");
517+
proj.MainActivity = proj.DefaultMainActivity.Replace ("button!.Click", "button!.AccessibilityTraversalAfter.ToString ();\nbutton!.Click");
517518

518519
var dotnet = CreateDotNetBuilder (proj);
519520
Assert.IsTrue (dotnet.Build (), "`dotnet build` should succeed");
@@ -608,7 +609,7 @@ void CreateEmptyFile (params string [] paths)
608609
public void XamarinLegacySdk ()
609610
{
610611
var proj = new XASdkProject (outputType: "Library") {
611-
Sdk = "Xamarin.Legacy.Sdk/0.1.0-alpha2",
612+
Sdk = "Xamarin.Legacy.Sdk/0.1.0-alpha4",
612613
Sources = {
613614
new AndroidItem.AndroidLibrary ("javaclasses.jar") {
614615
BinaryContent = () => ResourceData.JavaSourceJarTestJar,

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public static class KnownProperties
3636
public const string AndroidFastDeploymentType = "AndroidFastDeploymentType";
3737
public const string AndroidClassParser = "AndroidClassParser";
3838
public const string _AndroidAllowDeltaInstall = "_AndroidAllowDeltaInstall";
39+
public const string Nullable = "Nullable";
40+
public const string ImplicitUsings = "ImplicitUsings";
3941
}
4042
}
4143

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XASdkProject.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ static XASdkProject ()
2828
var assembly = typeof (XASdkProject).Assembly;
2929
using (var sr = new StreamReader (assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.Base.AndroidManifest.xml")))
3030
default_android_manifest = sr.ReadToEnd ();
31-
using (var sr = new StreamReader (assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.Base.MainActivity.cs")))
31+
using (var sr = new StreamReader (assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.DotNet.MainActivity.cs")))
3232
default_main_activity_cs = sr.ReadToEnd ();
3333
using (var sr = new StreamReader (assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.Base.LayoutMain.axml")))
3434
default_layout_main = sr.ReadToEnd ();
@@ -61,6 +61,8 @@ public XASdkProject (string outputType = "Exe", [CallerMemberName] string packag
6161
JavaPackageName = JavaPackageName ?? PackageName.ToLowerInvariant ();
6262
GlobalPackagesFolder = FileSystemUtils.FindNugetGlobalPackageFolder ();
6363
SetProperty (KnownProperties.OutputType, outputType);
64+
SetProperty (KnownProperties.Nullable, "enable");
65+
SetProperty (KnownProperties.ImplicitUsings, "enable");
6466

6567
// Add relevant Android content to our project without writing it to the .csproj file
6668
if (outputType == "Exe") {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ public class XamarinAndroidApplicationProject : XamarinAndroidCommonProject
2424

2525
static XamarinAndroidApplicationProject ()
2626
{
27-
using (var sr = new StreamReader (typeof(XamarinAndroidApplicationProject).Assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.Base.MainActivity.cs")))
27+
var folder = Builder.UseDotNet ? "DotNet" : "Base";
28+
using (var sr = new StreamReader (typeof(XamarinAndroidApplicationProject).Assembly.GetManifestResourceStream ($"Xamarin.ProjectTools.Resources.{folder}.MainActivity.cs")))
2829
default_main_activity_cs = sr.ReadToEnd ();
2930
using (var sr = new StreamReader (typeof(XamarinAndroidApplicationProject).Assembly.GetManifestResourceStream ("Xamarin.ProjectTools.Resources.Base.MainActivity.fs")))
3031
default_main_activity_fs = sr.ReadToEnd ();
@@ -40,6 +41,8 @@ public XamarinAndroidApplicationProject (string debugConfigurationName = "Debug"
4041
{
4142
if (Builder.UseDotNet) {
4243
SetProperty (KnownProperties.OutputType, "Exe");
44+
SetProperty (KnownProperties.Nullable, "enable");
45+
SetProperty (KnownProperties.ImplicitUsings, "enable");
4346
SetProperty ("XamarinAndroidSupportSkipVerifyVersions", "True");
4447
SetProperty ("_FastDeploymentDiagnosticLogging", "True");
4548

@@ -81,7 +84,7 @@ public XamarinAndroidApplicationProject (string debugConfigurationName = "Debug"
8184
}
8285

8386
// it is exposed as public because we may want to slightly modify this.
84-
public string DefaultMainActivity {
87+
public virtual string DefaultMainActivity {
8588
get { return Language == XamarinAndroidProjectLanguage.FSharp ? default_main_activity_fs : default_main_activity_cs; }
8689
}
8790

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidLibraryProject.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ public class XamarinAndroidLibraryProject : XamarinAndroidCommonProject
1414
public XamarinAndroidLibraryProject (string debugConfigurationName = "Debug", string releaseConfigurationName = "Release")
1515
: base (debugConfigurationName, releaseConfigurationName)
1616
{
17-
if (!Builder.UseDotNet) {
17+
if (Builder.UseDotNet) {
18+
SetProperty (KnownProperties.Nullable, "enable");
19+
SetProperty (KnownProperties.ImplicitUsings, "enable");
20+
} else {
1821
SetProperty ("AndroidApplication", "False");
1922
SetProperty ("AndroidResgenFile", Path.Combine ("Resources", "Resource.designer.cs"));
2023
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinFormsAndroidApplicationProject.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public XamarinFormsAndroidApplicationProject (string debugConfigurationName = "D
4242
: base (debugConfigurationName, releaseConfigurationName, packageName)
4343
{
4444
if (Builder.UseDotNet) {
45+
// Don't opt into ImplicitUsings
46+
RemoveProperty (KnownProperties.ImplicitUsings);
4547
PackageReferences.Add (KnownPackages.XamarinForms_4_7_0_1142);
4648
} else {
4749
PackageReferences.Add (KnownPackages.XamarinForms_4_0_0_425677);
@@ -76,6 +78,8 @@ public XamarinFormsAndroidApplicationProject (string debugConfigurationName = "D
7678
MainPage = MainPage_xaml_cs;
7779
}
7880

81+
public override string DefaultMainActivity => default_main_activity_cs;
82+
7983
public string MainPage { get; set; }
8084

8185
protected virtual string MainPageXaml () => ProcessSourceTemplate (MainPage_xaml);

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinFormsXASdkProject.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ static XamarinFormsXASdkProject ()
4444
public XamarinFormsXASdkProject (string outputType = "Exe", [CallerMemberName] string packageName = "")
4545
: base (outputType, packageName)
4646
{
47+
// Don't opt into ImplicitUsings
48+
RemoveProperty (KnownProperties.ImplicitUsings);
4749
PackageReferences.Add (KnownPackages.XamarinForms_4_7_0_1142);
4850

4951
// Workaround for AndroidX, see: https://github.com/xamarin/AndroidSupportComponents/pull/239

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"Size": 2676
2424
},
2525
"assemblies/UnnamedProject.dll": {
26-
"Size": 3171
26+
"Size": 3535
2727
},
2828
"classes.dex": {
2929
"Size": 316792
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace ${ROOT_NAMESPACE}
2+
{
3+
[Android.Runtime.Register ("${JAVA_PACKAGENAME}.MainActivity"), Activity (Label = "${PROJECT_NAME}", MainLauncher = true, Icon = "@drawable/icon")]
4+
public class MainActivity : Activity
5+
{
6+
int count = 1;
7+
8+
protected override void OnCreate (Bundle? bundle)
9+
{
10+
base.OnCreate (bundle);
11+
12+
// Set our view from the "main" layout resource
13+
SetContentView (Resource.Layout.Main);
14+
15+
var button = FindViewById<Button> (Resource.Id.myButton);
16+
button!.Click += delegate {
17+
button.Text = string.Format ("{0} clicks!", count++);
18+
};
19+
20+
//${AFTER_ONCREATE}
21+
}
22+
}
23+
//${AFTER_MAINACTIVITY}
24+
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Xamarin.ProjectTools.csproj

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,72 +11,7 @@
1111
<Import Project="..\..\..\..\external\xamarin-android-tools\src\Microsoft.Android.Build.BaseTasks\MSBuildReferences.projitems" />
1212
<ItemGroup>
1313
<Compile Remove="Resources\**\*.cs" />
14-
<EmbeddedResource Include="Resources\AndroidX\Tabbar.xml">
15-
<LogicalName>Xamarin.ProjectTools.Resources.AndroidX.Tabbar.xml</LogicalName>
16-
</EmbeddedResource>
17-
<EmbeddedResource Include="Resources\AndroidX\Toolbar.xml">
18-
<LogicalName>Xamarin.ProjectTools.Resources.AndroidX.Toolbar.xml</LogicalName>
19-
</EmbeddedResource>
20-
<EmbeddedResource Include="Resources\Wear\LayoutMain.axml">
21-
<LogicalName>Xamarin.ProjectTools.Resources.Wear.LayoutMain.axml</LogicalName>
22-
</EmbeddedResource>
23-
<EmbeddedResource Include="Resources\Wear\LayoutRectMain.axml">
24-
<LogicalName>Xamarin.ProjectTools.Resources.Wear.LayoutRectMain.axml</LogicalName>
25-
</EmbeddedResource>
26-
<EmbeddedResource Include="Resources\Wear\LayoutRoundMain.axml">
27-
<LogicalName>Xamarin.ProjectTools.Resources.Wear.LayoutRoundMain.axml</LogicalName>
28-
</EmbeddedResource>
29-
<EmbeddedResource Include="Resources\Wear\MainActivity.cs">
30-
<LogicalName>Xamarin.ProjectTools.Resources.Wear.MainActivity.cs</LogicalName>
31-
</EmbeddedResource>
32-
<EmbeddedResource Include="Resources\Wear\Strings.xml">
33-
<LogicalName>Xamarin.ProjectTools.Resources.Wear.Strings.xml</LogicalName>
34-
</EmbeddedResource>
35-
<EmbeddedResource Include="Resources\Base\AndroidManifest.xml">
36-
<LogicalName>Xamarin.ProjectTools.Resources.Base.AndroidManifest.xml</LogicalName>
37-
</EmbeddedResource>
38-
<EmbeddedResource Include="Resources\Base\Icon.png">
39-
<LogicalName>Xamarin.ProjectTools.Resources.Base.Icon.png</LogicalName>
40-
</EmbeddedResource>
41-
<EmbeddedResource Include="Resources\Base\LayoutMain.axml">
42-
<LogicalName>Xamarin.ProjectTools.Resources.Base.LayoutMain.axml</LogicalName>
43-
</EmbeddedResource>
44-
<EmbeddedResource Include="Resources\Base\MainActivity.cs">
45-
<LogicalName>Xamarin.ProjectTools.Resources.Base.MainActivity.cs</LogicalName>
46-
</EmbeddedResource>
47-
<EmbeddedResource Include="Resources\Base\MainActivity.fs">
48-
<LogicalName>Xamarin.ProjectTools.Resources.Base.MainActivity.fs</LogicalName>
49-
</EmbeddedResource>
50-
<EmbeddedResource Include="Resources\Base\AssemblyInfo.fs">
51-
<LogicalName>Xamarin.ProjectTools.Resources.Base.AssemblyInfo.fs</LogicalName>
52-
</EmbeddedResource>
53-
<EmbeddedResource Include="Resources\Base\Image.9.png">
54-
<LogicalName>Xamarin.ProjectTools.Resources.Base.Image.9.png</LogicalName>
55-
</EmbeddedResource>
56-
<EmbeddedResource Include="Resources\Base\Image2.9.png">
57-
<LogicalName>Xamarin.ProjectTools.Resources.Base.Image2.9.png</LogicalName>
58-
</EmbeddedResource>
59-
<EmbeddedResource Include="Resources\Base\test.keystore">
60-
<LogicalName>Xamarin.ProjectTools.Resources.Base.test.keystore</LogicalName>
61-
</EmbeddedResource>
62-
<EmbeddedResource Include="Resources\Base\classes.jar">
63-
<LogicalName>Xamarin.ProjectTools.Resources.Base.classes.jar</LogicalName>
64-
</EmbeddedResource>
65-
<EmbeddedResource Include="Resources\Base\custom.aotprofile" />
66-
<EmbeddedResource Include="Resources\Base\BuildReleaseArm64SimpleDotNet.apkdesc" />
67-
<EmbeddedResource Include="Resources\Base\BuildReleaseArm64SimpleLegacy.apkdesc" />
68-
<EmbeddedResource Include="Resources\Base\BuildReleaseArm64XFormsDotNet.apkdesc" />
69-
<EmbeddedResource Include="Resources\Base\BuildReleaseArm64XFormsLegacy.apkdesc" />
70-
<EmbeddedResource Include="Resources\Forms\MainActivity.cs" />
71-
<EmbeddedResource Include="Resources\Forms\App.xaml" />
72-
<EmbeddedResource Include="Resources\Forms\App.xaml.cs" />
73-
<EmbeddedResource Include="Resources\Forms\MainPage.xaml" />
74-
<EmbeddedResource Include="Resources\Forms\MainPage.xaml.cs" />
75-
<EmbeddedResource Include="Resources\Forms\MainPageMaps.xaml" />
76-
<EmbeddedResource Include="Resources\Forms\Tabbar.axml" />
77-
<EmbeddedResource Include="Resources\Forms\Toolbar.axml" />
78-
<EmbeddedResource Include="Resources\Forms\colors.xml" />
79-
<EmbeddedResource Include="Resources\Forms\styles.xml" />
14+
<EmbeddedResource Include="Resources\**\*" />
8015
</ItemGroup>
8116
<ItemGroup>
8217
<Content Include="..\..\..\..\.nuget\NuGet.exe">

tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ public string GetData() {
217217
};
218218
proj.SetAndroidSupportedAbis ("armeabi-v7a", "arm64-v8a", "x86", "x86_64");
219219
proj.SetProperty (proj.ReleaseProperties, "MonoSymbolArchive", "True");
220-
proj.MainActivity = proj.DefaultMainActivity.Replace ("//${AFTER_ONCREATE}",
220+
proj.MainActivity = proj.DefaultMainActivity.Replace ("//${AFTER_FORMS_INIT}",
221221
@" var cl = new Library1.Class1(null);
222222
cl.GetData();
223223
");
@@ -245,7 +245,7 @@ public string GetData() {
245245
Assert.IsTrue (didParse, $"Unable to parse {proj.TargetSdkVersion} as an int.");
246246
SymbolicateAndAssert (archivePath, logcatPath, new string [] {
247247
Path.Combine (Root, lb.ProjectDirectory, "Class1.cs:12"),
248-
Path.Combine (Root, builder.ProjectDirectory, "MainActivity.cs:33"),
248+
Path.Combine (Root, builder.ProjectDirectory, "MainActivity.cs:23"),
249249
Directory.Exists (builder.BuildOutputDirectory)
250250
? Path.Combine ("src", "Mono.Android", "obj", XABuildPaths.Configuration, "monoandroid10", $"android-{apiLevel}", "mcw", "Android.App.Activity.cs:")
251251
: $"src/Mono.Android/obj/Release/monoandroid10/android-{apiLevel}/mcw/Android.App.Activity.cs:",
@@ -559,11 +559,16 @@ public override Type BindToType (string assemblyName, string typeName)
559559
return null;
560560
}
561561
}
562-
}").Replace ("using System;", @"using System;
563-
using System.IO;
562+
}");
563+
564+
string usings =
565+
@"using System.IO;
564566
using System.Runtime.Serialization;
565567
using System.Runtime.Serialization.Formatters.Binary;
566-
using System.Runtime.Serialization.Json;");
568+
using System.Runtime.Serialization.Json;
569+
";
570+
proj.MainActivity = usings + proj.MainActivity;
571+
567572
builder = CreateApkBuilder ();
568573
Assert.IsTrue (builder.Install (proj), "Install should have succeeded.");
569574
ClearAdbLogcat ();

tests/MSBuildDeviceIntegration/Tests/XASdkDeployTests.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ public void DotNetDebug ()
8888
AssertCommercialBuild ();
8989
AssertHasDevices ();
9090

91-
XASdkProject proj;
92-
proj = new XASdkProject () {
93-
};
91+
var proj = new XASdkProject ();
9492
proj.SetRuntimeIdentifier (DeviceAbi);
9593
string runtimeId = proj.GetProperty (KnownProperties.RuntimeIdentifier);
9694

@@ -109,7 +107,7 @@ public void DotNetDebug ()
109107
// setup the debugger
110108
var session = new SoftDebuggerSession ();
111109
session.Breakpoints = new BreakpointStore {
112-
{ Path.Combine (Root, dotnet.ProjectDirectory, "MainActivity.cs"), 19 },
110+
{ Path.Combine (Root, dotnet.ProjectDirectory, "MainActivity.cs"), 10 },
113111
};
114112
session.TargetHitBreakpoint += (sender, e) => {
115113
Console.WriteLine ($"BREAK {e.Type}");

0 commit comments

Comments
 (0)