Consolidated ProjectHeads and supporting infrastructure (#360)
* Moved project heads to common folder * Fixed broken reference to props file * Fix broken path references * Fixed broken file references * Fixed broken path * Move asset references to props file * Consolidated ProjectHeads and supporting infrastructure * Migrating projects to new infra * Migrating files to new infra * Added missing assemblyname and rootnamespace declaration * Fixed building WinAppSdk * Fixed build errors for UWP under "All" solution * Fixed working directory for UseTargetFrameworks.ps1 * Switch GenerateSingleSampleHeads.ps1 to use dotnet templating tool Update WindowsAppSDK version and MSTest tools Add properties to allow tests to run on 1.2.x, see https://github.com/microsoft/testfx/issues/1127 Remove solution files from experiments Add bat file to copy heads and run slngen Tested locally running all heads and tests for an experiment * Update folder for linux CI build and Codespaces to WASM project * Clean-up and re-work build script for testing the project template * Use expanded form for environment variables everywhere * Use repo root path for script when in working directory of template * Use github syntax for environment variable for path, see https://github.com/actions/runner-images/issues/1794 * Re-work path structure for project template test in ci * Setup paths again to use full path into GenerateSingleSampleHeads script * Fixed comment referencing outdated file name * Use absolute path for project references in the "All" solution * Removed leading directory separator on generated path * Update slngen to fix build issues with not finding SDK due to global.json See details in https://github.com/microsoft/slngen/issues/453 * Add flag to build to enable easily getting diagnostics from tools * Clean-up labels and conditions for diagnostics * Add COREHOST_TRACE diagnostics for dotnet * Move conditional for COREHOST_TRACE into step * Just have COREHOST_TRACE defined at top * Add calling dotnet --info * Fixed missing markdown/cs files. Changed "Experiment" to "ToolkitComponent" * Revert initial work renaming Experiment to Component. * Fixed markdown exclude path * Moved project out of double nested folder * Removed restored files that should have been deleted * Move SourceGenerators.Tests project up a folder and fix in build.yml path Wasn't being built as was excluded from wildcard in solution generator * Fixed path for test output * Improved and shortened project names * Rename LabsUITestMethod to UIThreadTestMethod * Renamed to CommunityToolkit.Tooling.TestGen * New names for UITestMethodAttribute and UITestMethodGenerator * Fixed incorrect namespace * Fixed a bad find/replace * Renamed "all" component heads and App/Test shared projects * Added "App" to app head names * Fixed runtime error * Move SourceGenerators.Tests project up a folder and fix in build.yml path Wasn't being built as was excluded from wildcard in solution generator * Fixed path for test output * Improved and shortened project names * Rename LabsUITestMethod to UIThreadTestMethod * Renamed to CommunityToolkit.Tooling.TestGen * New names for UITestMethodAttribute and UITestMethodGenerator * Renamed "all" component heads and App/Test shared projects * Added "App" to app head names * Turn off diagnostics for our powershell scripts as slngen has error with diagnostics Fix diagnostic flag detection * Enable git long path support for the clean operation * Update microsoft/setup-msbuild github action * Cleaned up moved files that weren't deleted properly * Update slngen to 9.5.4 Should hopefully resolve CI issues from https://github.com/microsoft/slngen/issues/453 and its initial fix --------- Co-authored-by: michael-hawker <24302614+michael-hawker@users.noreply.github.com>
|
@ -15,7 +15,7 @@
|
|||
]
|
||||
},
|
||||
"microsoft.visualstudio.slngen.tool": {
|
||||
"version": "9.5.1",
|
||||
"version": "9.5.4",
|
||||
"commands": [
|
||||
"slngen"
|
||||
]
|
||||
|
|
|
@ -15,6 +15,11 @@ on:
|
|||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
DOTNET_VERSION: ${{ '6.0.x' }}
|
||||
ENABLE_DIAGNOSTICS: false
|
||||
#COREHOST_TRACE: 1
|
||||
COREHOST_TRACEFILE: corehosttrace.log
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
|
@ -24,10 +29,10 @@ jobs:
|
|||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
- name: Install .NET 6 SDK
|
||||
- name: Install .NET SDK v${{ env.DOTNET_VERSION }}
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
dotnet-version: ${{ env.DOTNET_VERSION }}
|
||||
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
- name: Checkout Repository
|
||||
|
@ -58,10 +63,14 @@ jobs:
|
|||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
- name: Install .NET 6 SDK
|
||||
- name: Install .NET SDK v${{ env.DOTNET_VERSION }}
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
dotnet-version: ${{ env.DOTNET_VERSION }}
|
||||
|
||||
- name: .NET Info (if diagnostics)
|
||||
if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }}
|
||||
run: dotnet --info
|
||||
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
- name: Checkout Repository
|
||||
|
@ -75,18 +84,18 @@ jobs:
|
|||
run: dotnet tool run uno-check --ci --fix --non-interactive --skip wsl --skip androidemulator --verbose
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1.0.3
|
||||
uses: microsoft/setup-msbuild@v1.3.1
|
||||
|
||||
- name: Enable ${{ env.TARGET_PLATFORMS }} TargetFrameworks
|
||||
working-directory: ./common/Scripts/
|
||||
working-directory: ./common/MultiTarget/
|
||||
run: powershell -version 5.1 -command "./UseTargetFrameworks.ps1 ${{ env.TARGET_PLATFORMS }}" -ErrorAction Stop
|
||||
|
||||
- name: Generate solution w/ ${{ env.TEST_PLATFORM }} Tests
|
||||
working-directory: ./
|
||||
run: powershell -version 5.1 -command "./common/GenerateAllSolution.ps1 -IncludeHeads ${{ env.TEST_PLATFORM }}" -ErrorAction Stop
|
||||
run: powershell -version 5.1 -command "./common/GenerateAllSolution.ps1 -IncludeHeads ${{ env.TEST_PLATFORM }}${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }}" -ErrorAction Stop
|
||||
|
||||
- name: Enable Uno.WinUI (in WinUI3 matrix only)
|
||||
working-directory: ./common/Scripts/
|
||||
working-directory: ./common/MultiTarget/
|
||||
run: powershell -version 5.1 -command "./UseUnoWinUI.ps1 3" -ErrorAction Stop
|
||||
if: ${{ matrix.platform == 'WinUI3' }}
|
||||
|
||||
|
@ -118,59 +127,82 @@ jobs:
|
|||
|
||||
- name: Run SourceGenerators tests
|
||||
id: test-generator
|
||||
run: vstest.console.exe ./common/CommunityToolkit.Labs.Core.SourceGenerators.Tests/CommunityToolkit.Labs.Core.SourceGenerators.Tests/bin/Release/net6.0/CommunityToolkit.Labs.Core.SourceGenerators.Tests.dll /logger:"trx;LogFileName=SourceGenerators.trx"
|
||||
run: vstest.console.exe ./common/CommunityToolkit.Tooling.SampleGen.Tests/bin/Release/net6.0/CommunityToolkit.Tooling.SampleGen.Tests.dll /logger:"trx;LogFileName=SourceGenerators.trx"
|
||||
|
||||
- name: Run experiment tests against ${{ env.TEST_PLATFORM }}
|
||||
id: test-platform
|
||||
run: vstest.console.exe ./tests/**/CommunityToolkit.Labs.Tests.${{ env.TEST_PLATFORM }}.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PLATFORM }}.trx"
|
||||
run: vstest.console.exe ./common/**/CommunityToolkit.Tests.${{ env.TEST_PLATFORM }}.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PLATFORM }}.trx"
|
||||
|
||||
- name: Create test reports
|
||||
run: |
|
||||
testspace '[${{ matrix.platform }}]./TestResults/*.trx'
|
||||
if: ${{ always() && (steps.test-generator.conclusion == 'success' || steps.test-platform.conclusion == 'success') }}
|
||||
|
||||
#- name: Artifact - Slngen Logs
|
||||
# uses: actions/upload-artifact@v3
|
||||
# if: success() || failure()
|
||||
# with:
|
||||
# name: slngen-logs
|
||||
# path: ./**/slngen.*log
|
||||
- name: Artifact - Diagnostic Logs
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }}
|
||||
with:
|
||||
name: build-logs
|
||||
path: ./**/*.*log
|
||||
|
||||
# Test job to build a single experiment to ensure our changes work for both our main types of solutions at the moment
|
||||
new-experiment:
|
||||
needs: [Xaml-Style-Check]
|
||||
# TODO: We should only run this if something in the common or template folder changed...
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
PROJECT_DIRECTORY: template/ProjectTemplate
|
||||
TEST_PROJECT_NAME: CiTestExp
|
||||
TEST_PROJECT_DIRECTORY: labs/CiTestExp
|
||||
|
||||
steps:
|
||||
- name: Install .NET 6 SDK
|
||||
- name: Install .NET SDK v${{ env.DOTNET_VERSION }}
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
dotnet-version: ${{ env.DOTNET_VERSION }}
|
||||
|
||||
- name: .NET Info (if diagnostics)
|
||||
if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }}
|
||||
run: dotnet --info
|
||||
|
||||
- name: Enable git long paths
|
||||
run: git config --system core.longpaths true
|
||||
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1.0.3
|
||||
uses: microsoft/setup-msbuild@v1.3.1
|
||||
|
||||
- name: Add project heads to ProjectTemplate
|
||||
working-directory: ./${{ env.PROJECT_DIRECTORY }}
|
||||
run: ${{ github.workspace }}/common/ProjectHeads/GenerateSingleSampleHeads.ps1 -componentPath ${{ github.workspace }}/${{ env.PROJECT_DIRECTORY }}${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }}
|
||||
|
||||
# Build and use template for creating new experiments
|
||||
- name: Build ProjectTemplate
|
||||
working-directory: ./template/lab
|
||||
working-directory: ./${{ env.PROJECT_DIRECTORY }}
|
||||
run: msbuild.exe ProjectTemplate.sln /restore /nowarn:MSB4011 -p:Configuration=Debug
|
||||
|
||||
- name: Clean environment
|
||||
working-directory: ./
|
||||
run: git clean -xdf
|
||||
|
||||
# Create a new experiment from the template and test using that
|
||||
- name: Install template
|
||||
working-directory: ./template/lab
|
||||
working-directory: ${{ env.PROJECT_DIRECTORY }}
|
||||
run: dotnet new --install ./
|
||||
|
||||
- name: Create new experiment
|
||||
working-directory: ./labs
|
||||
run: dotnet new labexp -n CiTestExp
|
||||
run: dotnet new labexp -n ${{ env.TEST_PROJECT_NAME }}
|
||||
|
||||
- name: Add project heads to ${{ env.TEST_PROJECT_NAME }}
|
||||
working-directory: ./${{ env.TEST_PROJECT_DIRECTORY }}
|
||||
run: ${{ github.workspace }}/common/ProjectHeads/GenerateSingleSampleHeads.ps1 -componentPath ${{ github.workspace }}/${{ env.TEST_PROJECT_DIRECTORY }}${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }}
|
||||
|
||||
- name: MSBuild
|
||||
working-directory: ./labs/CiTestExp
|
||||
run: msbuild.exe CiTestExp.sln /restore /nowarn:MSB4011 -p:Configuration=Release
|
||||
working-directory: ./${{ env.TEST_PROJECT_DIRECTORY }}
|
||||
run: msbuild.exe ${{ env.TEST_PROJECT_NAME }}.sln /restore /nowarn:MSB4011 -p:Configuration=Release
|
||||
|
||||
# Run tests
|
||||
- name: Setup VSTest Path
|
||||
|
@ -183,26 +215,36 @@ jobs:
|
|||
|
||||
- name: Run tests in the generated experiment against UWP
|
||||
id: test-uwp
|
||||
run: vstest.console.exe ./labs/CiTestExp/**/CiTestExp.Tests.UWP.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=CiTestExpUWP.trx"
|
||||
run: vstest.console.exe ./labs/${{ env.TEST_PROJECT_NAME }}/**/${{ env.TEST_PROJECT_NAME }}.Tests.UWP.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PROJECT_NAME }}UWP.trx"
|
||||
|
||||
- name: Run tests in the generated experiment against WinAppSDK
|
||||
id: test-winappsdk
|
||||
run: vstest.console.exe ./labs/CiTestExp/**/CiTestExp.Tests.WinAppSdk.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=CiTestExpWinAppSdk.trx"
|
||||
run: vstest.console.exe ./labs/${{ env.TEST_PROJECT_NAME }}/**/${{ env.TEST_PROJECT_NAME }}.Tests.WinAppSdk.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PROJECT_NAME }}WinAppSdk.trx"
|
||||
|
||||
- name: Create test reports
|
||||
run: |
|
||||
testspace '[New Experiment]./TestResults/*.trx'
|
||||
if: ${{ always() && (steps.test-uwp.conclusion == 'success' || steps.test-winappsdk.conclusion == 'success') }}
|
||||
|
||||
- name: Artifact - Diagnostic Logs
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }}
|
||||
with:
|
||||
name: new-experiment-logs
|
||||
path: ./**/*.*log
|
||||
|
||||
wasm-linux:
|
||||
needs: [Xaml-Style-Check]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Install .NET 6 SDK
|
||||
- name: Install .NET SDK v${{ env.DOTNET_VERSION }}
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
dotnet-version: ${{ env.DOTNET_VERSION }}
|
||||
|
||||
- name: .NET Info (if diagnostics)
|
||||
if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }}
|
||||
run: dotnet --info
|
||||
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
- name: Checkout Repository
|
||||
|
@ -215,22 +257,22 @@ jobs:
|
|||
- name: Generate solution
|
||||
shell: pwsh
|
||||
working-directory: ./
|
||||
run: ./common/GenerateAllSolution.ps1
|
||||
run: ./common/GenerateAllSolution.ps1${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }}
|
||||
|
||||
- name: Install ninja for WASM native dependencies
|
||||
run: sudo apt-get install ninja-build
|
||||
|
||||
# Issue with Comment Links currently, see: https://github.com/mrlacey/CommentLinks/issues/38
|
||||
# See launch.json configuration file for analogous command we're emulating here to build LINK: ../../.vscode/launch.json:CommunityToolkit.Labs.Wasm.csproj
|
||||
# See launch.json configuration file for analogous command we're emulating here to build LINK: ../../.vscode/launch.json:CommunityToolkit.App.Wasm.csproj
|
||||
- name: dotnet build
|
||||
working-directory: ./platforms/CommunityToolkit.Labs.Wasm/
|
||||
working-directory: ./common/ProjectHeads/AllComponents/Wasm/
|
||||
run: dotnet build /r /bl /p:UnoSourceGeneratorUseGenerationHost=true /p:UnoSourceGeneratorUseGenerationController=false
|
||||
|
||||
# TODO: Do we want to run tests here? Can we do that on linux easily?
|
||||
|
||||
#- name: Artifact - Slngen Logs
|
||||
# uses: actions/upload-artifact@v3
|
||||
# if: success() || failure()
|
||||
# with:
|
||||
# name: slngen-logs
|
||||
# path: ./**/slngen.*log
|
||||
- name: Artifact - Diagnostic Logs
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }}
|
||||
with:
|
||||
name: linux-logs
|
||||
path: ./**/*.*log
|
||||
|
|
|
@ -358,3 +358,7 @@ MigrationBackup/
|
|||
# Community Toolkit Labs generated files
|
||||
Toolkit.Labs.All.sln
|
||||
common/MultiTarget/Generated/**
|
||||
heads/
|
||||
|
||||
# We use slngen to generate solutions
|
||||
*.sln
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
"/p:UnoSourceGeneratorUseGenerationHost=true",
|
||||
"/p:UnoSourceGeneratorUseGenerationController=false",
|
||||
"/p:UnoRemoteControlPort=443",
|
||||
"--project=${workspaceFolder}/platforms/CommunityToolkit.Labs.Wasm/CommunityToolkit.Labs.Wasm.csproj"
|
||||
"--project=${workspaceFolder}/common/ProjectHeads/AllComponents/CommunityToolkit.Labs.Wasm/CommunityToolkit.Labs.Wasm.csproj"
|
||||
],
|
||||
"presentation": {
|
||||
"group": "1",
|
||||
"order": 1
|
||||
},
|
||||
"cwd": "${workspaceFolder}/platforms/CommunityToolkit.Labs.Wasm",
|
||||
"cwd": "${workspaceFolder}/common/ProjectHeads/AllComponents/CommunityToolkit.Labs.Wasm",
|
||||
"preLaunchTask": "generateAllSolution"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -39,7 +39,7 @@ Once there is traction and your idea is approved, an issue will be created to tr
|
|||
Then you can fork the Labs repo, create a new branch, and start working on your feature (or porting over your existing prototype).
|
||||
|
||||
```ascii
|
||||
dotnet new --install .\template\lab\
|
||||
dotnet new --install .\template\ProjectTemplate\
|
||||
|
||||
cd labs
|
||||
|
||||
|
@ -68,7 +68,7 @@ Open up an issue on the main Toolkit repo using the `Toolkit Labs Transfer` Issu
|
|||
|
||||
## Building the Sample App
|
||||
|
||||
You can build the main Sample App solution to see all the experiments currently available in this repository by running the `GenerateAllSolution.ps1` PowerShell script in the repo root. Then just open the `Toolkit.Labs.All.sln` solution in Visual Studio. You can run one of the project heads under the platforms folder such as `CommunityToolkit.Labs.WinAppSdk` to run the sample app for that platform.
|
||||
You can build the main Sample App solution to see all the experiments currently available in this repository by running the `GenerateAllSolution.bat` script in the repo root. Then just open the `Toolkit.Labs.All.sln` solution in Visual Studio. You can run one of the project heads such as `CommunityToolkit.App.WinAppSdk` to run the sample app for that platform.
|
||||
|
||||
If you'd like to run a head beyond UWP, Wasm, or the WinAppSDK, you'll need to run the `UseTargetFrameworks.ps1` script first in the `common/Scripts` directory. e.g. `.\UseTargetFrameworks.ps1 -targets all`
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
|
||||
<Application x:Class="CommunityToolkit.Labs.Shared.App"
|
||||
<Application x:Class="CommunityToolkit.App.Shared.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Application.Resources>
|
|
@ -2,7 +2,7 @@
|
|||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
namespace CommunityToolkit.Labs.Shared;
|
||||
namespace CommunityToolkit.App.Shared;
|
||||
|
||||
/// <summary>
|
||||
/// Provides application-specific behavior to supplement the default Application class.
|
|
@ -1,9 +1,9 @@
|
|||
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
|
||||
<Page x:Class="CommunityToolkit.Labs.Shared.AppLoadingView"
|
||||
<Page x:Class="CommunityToolkit.App.Shared.AppLoadingView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:CommunityToolkit.Labs.Shared"
|
||||
xmlns:local="using:CommunityToolkit.App.Shared"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
|
||||
mc:Ignorable="d">
|
|
@ -2,11 +2,11 @@
|
|||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using CommunityToolkit.Labs.Core.SourceGenerators.Metadata;
|
||||
using CommunityToolkit.Labs.Core.SourceGenerators;
|
||||
using CommunityToolkit.Tooling.SampleGen.Metadata;
|
||||
using CommunityToolkit.Tooling.SampleGen;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Windows.Foundation.Collections;
|
||||
using CommunityToolkit.Labs.Shared.Pages;
|
||||
using CommunityToolkit.App.Shared.Pages;
|
||||
|
||||
#if !WINAPPSDK
|
||||
using Windows.System;
|
||||
|
@ -24,7 +24,7 @@ using Microsoft.UI.Xaml.Media;
|
|||
using Microsoft.UI.Xaml.Navigation;
|
||||
#endif
|
||||
|
||||
namespace CommunityToolkit.Labs.Shared;
|
||||
namespace CommunityToolkit.App.Shared;
|
||||
|
||||
/// <summary>
|
||||
/// Kicks off the loading process and determines whether to display a single-sample or multi-sample view.
|
До Ширина: | Высота: | Размер: 637 B После Ширина: | Высота: | Размер: 637 B |
До Ширина: | Высота: | Размер: 806 B После Ширина: | Высота: | Размер: 806 B |
До Ширина: | Высота: | Размер: 960 B После Ширина: | Высота: | Размер: 960 B |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 3.4 KiB После Ширина: | Высота: | Размер: 3.4 KiB |
До Ширина: | Высота: | Размер: 3.2 KiB После Ширина: | Высота: | Размер: 3.2 KiB |
До Ширина: | Высота: | Размер: 6.0 KiB После Ширина: | Высота: | Размер: 6.0 KiB |
До Ширина: | Высота: | Размер: 3.2 KiB После Ширина: | Высота: | Размер: 3.2 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 3.6 KiB После Ширина: | Высота: | Размер: 3.6 KiB |
До Ширина: | Высота: | Размер: 346 KiB После Ширина: | Высота: | Размер: 346 KiB |
До Ширина: | Высота: | Размер: 359 KiB После Ширина: | Высота: | Размер: 359 KiB |
До Ширина: | Высота: | Размер: 7.6 KiB После Ширина: | Высота: | Размер: 7.6 KiB |
До Ширина: | Высота: | Размер: 8.4 KiB После Ширина: | Высота: | Размер: 8.4 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 16 KiB После Ширина: | Высота: | Размер: 16 KiB |
До Ширина: | Высота: | Размер: 16 KiB После Ширина: | Высота: | Размер: 16 KiB |
До Ширина: | Высота: | Размер: 20 KiB После Ширина: | Высота: | Размер: 20 KiB |
До Ширина: | Высота: | Размер: 20 KiB После Ширина: | Высота: | Размер: 20 KiB |
До Ширина: | Высота: | Размер: 33 KiB После Ширина: | Высота: | Размер: 33 KiB |
До Ширина: | Высота: | Размер: 33 KiB После Ширина: | Высота: | Размер: 33 KiB |
До Ширина: | Высота: | Размер: 107 KiB После Ширина: | Высота: | Размер: 107 KiB |
До Ширина: | Высота: | Размер: 107 KiB После Ширина: | Высота: | Размер: 107 KiB |
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 1.4 KiB |
До Ширина: | Высота: | Размер: 3.0 KiB После Ширина: | Высота: | Размер: 3.0 KiB |
До Ширина: | Высота: | Размер: 3.0 KiB После Ширина: | Высота: | Размер: 3.0 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 5.8 KiB После Ширина: | Высота: | Размер: 5.8 KiB |
До Ширина: | Высота: | Размер: 5.8 KiB После Ширина: | Высота: | Размер: 5.8 KiB |
До Ширина: | Высота: | Размер: 8.9 KiB После Ширина: | Высота: | Размер: 8.9 KiB |
До Ширина: | Высота: | Размер: 8.9 KiB После Ширина: | Высота: | Размер: 8.9 KiB |
До Ширина: | Высота: | Размер: 28 KiB После Ширина: | Высота: | Размер: 28 KiB |
До Ширина: | Высота: | Размер: 28 KiB После Ширина: | Высота: | Размер: 28 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 18 KiB После Ширина: | Высота: | Размер: 18 KiB |
До Ширина: | Высота: | Размер: 18 KiB После Ширина: | Высота: | Размер: 18 KiB |
До Ширина: | Высота: | Размер: 18 KiB После Ширина: | Высота: | Размер: 18 KiB |
До Ширина: | Высота: | Размер: 22 KiB После Ширина: | Высота: | Размер: 22 KiB |
До Ширина: | Высота: | Размер: 22 KiB После Ширина: | Высота: | Размер: 22 KiB |
До Ширина: | Высота: | Размер: 22 KiB После Ширина: | Высота: | Размер: 22 KiB |
До Ширина: | Высота: | Размер: 35 KiB После Ширина: | Высота: | Размер: 35 KiB |
До Ширина: | Высота: | Размер: 35 KiB После Ширина: | Высота: | Размер: 35 KiB |
До Ширина: | Высота: | Размер: 35 KiB После Ширина: | Высота: | Размер: 35 KiB |
До Ширина: | Высота: | Размер: 114 KiB После Ширина: | Высота: | Размер: 114 KiB |
До Ширина: | Высота: | Размер: 114 KiB После Ширина: | Высота: | Размер: 114 KiB |
До Ширина: | Высота: | Размер: 114 KiB После Ширина: | Высота: | Размер: 114 KiB |
До Ширина: | Высота: | Размер: 4.5 KiB После Ширина: | Высота: | Размер: 4.5 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 6.7 KiB После Ширина: | Высота: | Размер: 6.7 KiB |
До Ширина: | Высота: | Размер: 6.7 KiB После Ширина: | Высота: | Размер: 6.7 KiB |
До Ширина: | Высота: | Размер: 9.3 KiB После Ширина: | Высота: | Размер: 9.3 KiB |
До Ширина: | Высота: | Размер: 9.3 KiB После Ширина: | Высота: | Размер: 9.3 KiB |
До Ширина: | Высота: | Размер: 13 KiB После Ширина: | Высота: | Размер: 13 KiB |
До Ширина: | Высота: | Размер: 13 KiB После Ширина: | Высота: | Размер: 13 KiB |
До Ширина: | Высота: | Размер: 42 KiB После Ширина: | Высота: | Размер: 42 KiB |
До Ширина: | Высота: | Размер: 42 KiB После Ширина: | Высота: | Размер: 42 KiB |
До Ширина: | Высота: | Размер: 1.6 KiB После Ширина: | Высота: | Размер: 1.6 KiB |
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 1.4 KiB |
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 1.4 KiB |
До Ширина: | Высота: | Размер: 1.9 KiB После Ширина: | Высота: | Размер: 1.9 KiB |
До Ширина: | Высота: | Размер: 1.9 KiB После Ширина: | Высота: | Размер: 1.9 KiB |
До Ширина: | Высота: | Размер: 2.5 KiB После Ширина: | Высота: | Размер: 2.5 KiB |
До Ширина: | Высота: | Размер: 2.5 KiB После Ширина: | Высота: | Размер: 2.5 KiB |
До Ширина: | Высота: | Размер: 3.6 KiB После Ширина: | Высота: | Размер: 3.6 KiB |
До Ширина: | Высота: | Размер: 3.6 KiB После Ширина: | Высота: | Размер: 3.6 KiB |
До Ширина: | Высота: | Размер: 9.9 KiB После Ширина: | Высота: | Размер: 9.9 KiB |
До Ширина: | Высота: | Размер: 9.9 KiB После Ширина: | Высота: | Размер: 9.9 KiB |
До Ширина: | Высота: | Размер: 637 B После Ширина: | Высота: | Размер: 637 B |
До Ширина: | Высота: | Размер: 637 B После Ширина: | Высота: | Размер: 637 B |
До Ширина: | Высота: | Размер: 637 B После Ширина: | Высота: | Размер: 637 B |
До Ширина: | Высота: | Размер: 806 B После Ширина: | Высота: | Размер: 806 B |
До Ширина: | Высота: | Размер: 806 B После Ширина: | Высота: | Размер: 806 B |
До Ширина: | Высота: | Размер: 806 B После Ширина: | Высота: | Размер: 806 B |
До Ширина: | Высота: | Размер: 960 B После Ширина: | Высота: | Размер: 960 B |
До Ширина: | Высота: | Размер: 960 B После Ширина: | Высота: | Размер: 960 B |
До Ширина: | Высота: | Размер: 960 B После Ширина: | Высота: | Размер: 960 B |
До Ширина: | Высота: | Размер: 29 KiB После Ширина: | Высота: | Размер: 29 KiB |
До Ширина: | Высота: | Размер: 29 KiB После Ширина: | Высота: | Размер: 29 KiB |
До Ширина: | Высота: | Размер: 29 KiB После Ширина: | Высота: | Размер: 29 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB После Ширина: | Высота: | Размер: 1.3 KiB |