Skip to content

Commit

Permalink
feat: Add dotnet new .NET 6 mobile templates
Browse files Browse the repository at this point in the history
  • Loading branch information
jeromelaban committed Jul 16, 2021
1 parent 334bf7c commit 5b9d4b7
Show file tree
Hide file tree
Showing 79 changed files with 2,696 additions and 137 deletions.
4 changes: 4 additions & 0 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,7 @@ jobs:
- template: build/ci/.azure-devops-screenshot-compare.yml
parameters:
vmImage: '$(windowsHostedVMImage)'

- template: build/ci/.azure-devops-vs2022-vsix.yml
parameters:
vmImage: '$(windowsHostedVMImage)'
33 changes: 28 additions & 5 deletions build/Uno.UI.Build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@

<CallTarget Targets="BuildCI" Condition="'$(Configuration)'=='Release' and $(_isWindows)" />

<CallTarget Targets="PublishVSIX" Condition="'$(Configuration)'=='Release' and $(_isWindows)" />
<CallTarget Targets="PublishVSIX2019" Condition="'$(Configuration)'=='Release' and $(_isWindows)" />
</Target>

<Target Name="BuildNet6" AfterTargets="Build" Condition="'$(BuildingInsideVisualStudio)'==''">
Expand All @@ -72,6 +72,18 @@

<CallTarget Targets="BuildNuGetPackage" Condition="'$(Configuration)'=='Release'" />
</Target>

<Target Name="Build2022VSIX" Condition="'$(BuildingInsideVisualStudio)'==''">
<CallTarget Targets="UpdateFileVersions" Condition="$(_isWindows)" />

<MSBuild Properties="Configuration=Release"
Projects="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX.2022\UnoSolutionTemplate.VSIX.2022.csproj"
Targets="Restore;Build"
RebaseOutputs="false"
BuildInParallel="true" />

<CallTarget Targets="PublishVSIX2022" Condition="'$(Configuration)'=='Release' and $(_isWindows)" />
</Target>

<Target Name="UpdateFileVersions">
<PropertyGroup>
Expand All @@ -83,7 +95,12 @@
</MSBuildDeveloperNamespace>
</PropertyGroup>

<XmlPoke XmlInputPath="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX\source.extension.vsixmanifest"
<ItemGroup>
<_VSIXInput Include="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX.2019\source.extension.vsixmanifest" />
<_VSIXInput Include="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX.2022\source.extension.vsixmanifest" />
</ItemGroup>

<XmlPoke XmlInputPath="%(_VSIXInput.Identity)"
Query="/x:PackageManifest/x:Metadata/x:Identity/@Version"
Value="$(GITVERSION_MajorMinorPatch).$(GITVERSION_CommitsSinceVersionSource)"
Namespaces="$(VSXNamespace)"
Expand All @@ -99,6 +116,7 @@
<_legacyProject Include="..\src\SolutionTemplate\**\*.macOS.csproj"/>
<_legacyProject Include="..\src\SolutionTemplate\**\*.Wpf.Host.csproj"/>

<_sdkProject Include="..\src\SolutionTemplate\**\*.Mobile.csproj"/>
<_sdkProject Include="..\src\SolutionTemplate\**\*.Wasm.csproj"/>
<_sdkProject Include="..\src\SolutionTemplate\**\*.Skia.*.csproj"/>
<_sdkProject Include="..\src\SolutionTemplate\UnoLibraryTemplate\CrossTargetedLibrary.csproj"/>
Expand Down Expand Up @@ -218,9 +236,14 @@
<Exec Command="..\src\Uno.UWPSyncGenerator\Bin\Release\Uno.UWPSyncGenerator.exe &quot;sync&quot;" />
</Target>

<Target Name="PublishVSIX" Condition="'$(UNO_UWP_BUILD)'=='true'">
<Copy SourceFiles="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX\bin\Release\UnoSolutionTemplate.VSIX.vsix"
DestinationFiles="$(OutputDir)\vslatest-generic\UnoPlatform-$(GITVERSION_SemVer).vsix" />
<Target Name="PublishVSIX2019" Condition="'$(UNO_UWP_BUILD)'=='true'">
<Copy SourceFiles="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX.2019\bin\Release\UnoSolutionTemplate.VSIX.vsix"
DestinationFiles="$(OutputDir)\vslatest-generic\UnoPlatform-$(GITVERSION_SemVer).x86.vsix" />
</Target>

<Target Name="PublishVSIX2022">
<Copy SourceFiles="..\src\SolutionTemplate\UnoSolutionTemplate.VSIX.2022\bin\Release\UnoSolutionTemplate.VSIX.2022.vsix"
DestinationFiles="$(OutputDir)\vslatest\UnoPlatform-$(GITVERSION_SemVer).x64.vsix" />
</Target>

<Target Name="PrepareNuGetPackage">
Expand Down
10 changes: 9 additions & 1 deletion build/Uno.WinUI.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,15 @@
<file src="uno.winui.cross-runtime.targets" target="buildTransitive\net6.0-android30.0" />
<file src="uno.winui.cross-runtime.targets" target="buildTransitive\net6.0-ios" />
<file src="uno.winui.cross-runtime.targets" target="buildTransitive\net6.0-catalyst" />


<file src="uno.winui.single-project.targets" target="buildTransitive\MonoAndroid" />
<file src="uno.winui.single-project.targets" target="buildTransitive\xamarinios10" />
<file src="uno.winui.single-project.targets" target="buildTransitive\xamarinmac20" />
<file src="uno.winui.single-project.targets" target="buildTransitive\netstandard2.0" />
<file src="uno.winui.single-project.targets" target="buildTransitive\net6.0-android30.0" />
<file src="uno.winui.single-project.targets" target="buildTransitive\net6.0-ios" />
<file src="uno.winui.single-project.targets" target="buildTransitive\net6.0-catalyst" />

<file src="..\src\SourceGenerators\Uno.UI.Tasks\Content\Uno.UI.Tasks.targets" target="buildTransitive\MonoAndroid" />
<file src="..\src\SourceGenerators\Uno.UI.Tasks\Content\Uno.UI.Tasks.targets" target="buildTransitive\xamarinios10" />
<file src="..\src\SourceGenerators\Uno.UI.Tasks\Content\Uno.UI.Tasks.targets" target="buildTransitive\xamarinmac20" />
Expand Down
30 changes: 30 additions & 0 deletions build/ci/.azure-devops-project-template-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,36 @@ jobs:
displayName: Run Project Templates Tests
env:
NUGET_CI_CONFIG: $(Build.SourcesDirectory)\src\nuget.ci.config
BUILD_SOURCESDIRECTORY: $(BUILD.SOURCESDIRECTORY)

- job: Dotnet_Template_Tests_Net6
displayName: 'dotnet new net6 Templates Tests'

pool:
vmImage: ${{ parameters.vmImageWindows }}

dependsOn: Generate_Packages

steps:
- task: DownloadBuildArtifacts@0
inputs:
artifactName: NugetPackages

- template: templates/gitversion.yml

- template: templates/dotnet6-install-windows.yml

- script: copy $(System.ArtifactsDirectory)\NugetPackages\vslatest\*.nupkg $(Build.SourcesDirectory)\src\PackageCache
displayName: Copy Artifacts to PackageCache

- script: dotnet new -i $(System.ArtifactsDirectory)\NugetPackages\vslatest\Uno.ProjectTemplates.Dotnet*.nupkg
displayName: Install Project Templates

- powershell: build\run-net6-template-tests.ps1
displayName: Run Project Templates Tests
env:
NUGET_CI_CONFIG: $(Build.SourcesDirectory)\src\nuget.ci.net6.config
BUILD_SOURCESDIRECTORY: $(BUILD.SOURCESDIRECTORY)

- job: Dotnet_Template_Tests_Linux
displayName: 'dotnet new Templates Tests - Linux'
Expand Down
57 changes: 57 additions & 0 deletions build/ci/.azure-devops-vs2022-vsix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
parameters:
vmImage: ''

jobs:
- job: VS2022_VSIX
displayName: 'VS 2022 Extension build'

pool:
vmImage: ${{ parameters.vmImage }}

variables:
CombinedConfiguration: Release|Any CPU
CI_Build: true

steps:
- checkout: self
clean: true

- powershell: |
Invoke-WebRequest https://aka.ms/vs/17/pre/vs_enterprise.exe -O $env:TEMP\vs_enterprise.exe
displayName: VS17 installer download
- powershell: |
$exitCode = & "$env:TEMP\vs_enterprise.exe" --quiet --norestart --wait `
--installPath C:\VS2022 `
--add Microsoft.VisualStudio.Workload.NetCrossPlat `
--add Microsoft.VisualStudio.Workload.NetCoreTools `
--add Microsoft.VisualStudio.Workload.ManagedDesktop `
--add Microsoft.VisualStudio.Workload.Universal `
--add Microsoft.VisualStudio.Component.VSSDK `
| Out-Null
Write-Output $exitCode
Write-Host "##vso[task.setvariable variable=PATH;]${env:PATH};C:\VS2022\MSBuild\Current\Bin"
displayName: VS17 install
- template: templates/gitversion.yml

- task: MSBuild@1
displayName: ≥ Build 2022 VSIX
inputs:
solution: Build/Uno.UI.Build.csproj
msbuildLocationMethod: location
msbuildLocation: C:\VS2022\MSBuild\Current\Bin
msbuildArguments: /r /m /t:Build2022VSIX "/p:CombinedConfiguration=$(CombinedConfiguration)" /detailedsummary /bl:$(build.artifactstagingdirectory)\build-$(GitVersion.FullSemVer)-generate-vsix2022.binlog
clean: false
restoreNugetPackages: false
logProjectEvents: false
createLogFile: false

- task: PublishBuildArtifacts@1
condition: always()
inputs:
PathtoPublish: $(build.artifactstagingdirectory)
ArtifactName: NugetPackages
ArtifactType: Container

81 changes: 81 additions & 0 deletions build/run-net6-template-tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
Set-PSDebug -Trace 1

$ErrorActionPreference = 'Stop'

function Assert-ExitCodeIsZero()
{
if ($LASTEXITCODE -ne 0)
{
throw "Exit code must be zero."
}
}

$default = @('/ds', "/p:RestoreConfigFile=$env:NUGET_CI_CONFIG", '/p:PackageCertificateKeyFile=')
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe

$debug = $default + '/p:Configuration=Debug' + '/r'
$release = $default + '/p:Configuration=Release' + '/r'

## Configurations are split to work around UWP not building with .NET new
$dotnetBuildConfigurations =
@(
@("Mobile", "-f:net6.0-android"),
@("Mobile", "-f:net6.0-ios"),
@("Mobile", "-f:net6.0-maccatalyst"),
@("Wasm", ""),
@("Skia.Gtk", ""),
@("Skia.Linux.FrameBuffer", ""),
@("Skia.WPF.Host", "")
)

# Debug Config
dotnet new unoapp-net6 -n UnoAppAll

pushd UnoAppAll

for($i = 0; $i -lt $dotnetBuildConfigurations.Length; $i++)
{
$platform=$dotnetBuildConfigurations[$i][0];
& dotnet build -c Debug $default $dotnetBuildConfigurations[$i][1] "UnoAppAll.$platform\UnoAppAll.$platform.csproj"
Assert-ExitCodeIsZero
}

& $msbuild $debug "UnoAppAll.UWP\UnoAppAll.UWP.csproj"
Assert-ExitCodeIsZero

for($i = 0; $i -lt $dotnetBuildConfigurations.Length; $i++)
{
$platform=$dotnetBuildConfigurations[$i][0];
& dotnet build -c Release $default $dotnetBuildConfigurations[$i][1] "UnoAppAll.$platform\UnoAppAll.$platform.csproj"
Assert-ExitCodeIsZero
}

& $msbuild $debug "UnoAppAll.UWP\UnoAppAll.UWP.csproj"
Assert-ExitCodeIsZero

popd

$dotnetBuildNet6Configurations =
@(
@("Mobile", "-f:net6.0-android"),
@("Mobile", "-f:net6.0-ios"),
@("Mobile", "-f:net6.0-maccatalyst"),
@("Wasm", ""),
@("Skia.Gtk", ""),
@("Skia.Linux.FrameBuffer", ""),
@("Windows.Desktop", ""),
@("Skia.WPF.Host", "")
)

# WinUI - Default
dotnet new unoapp-winui-net6 -n UnoAppWinUI

pushd UnoAppWinUI
for($i = 0; $i -lt $dotnetBuildNet6Configurations.Length; $i++)
{
$platform=$dotnetBuildNet6Configurations[$i][0];
& dotnet build -c Debug $default $dotnetBuildNet6Configurations[$i][1] "UnoAppWinUI.$platform\UnoAppWinUI.$platform.csproj"
Assert-ExitCodeIsZero
}

popd
2 changes: 1 addition & 1 deletion doc/articles/uno-development/debugging-templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ VSIX templates are using the Visual Studio extensibility model, and run with a s

To make modifications to those templates and test the result:
- In Visual Studio, open the solution using the [Uno.UI-Wasm-hotreload-vsix-only.slnf filters](building-uno-ui.md)
- Right click on the `UnoSolutionTemplate.VISX` project then debug
- Right click on the `UnoSolutionTemplate.VSIX.2022` or `UnoSolutionTemplate.VSIX.2019` project then debug
- A new isolated testing instance of visual studio will open, allowing you to create projects using modified templates

## dotnet new templates
Expand Down
Loading

0 comments on commit 5b9d4b7

Please sign in to comment.