Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
158873 stories
·
33 followers

Deploying Aspire Apps to Azure App Service for Linux

1 Share
From: Microsoft Azure Developers
Duration: 19:43
Views: 12

What should Azure Friday cover next? Click the link to share your ideas: https://aka.ms/AzureFridayIdeas

In this Azure Friday episode, Scott Hanselman and Tulika Chaudharie show how to take an Aspire application from local development to Azure App Service for Linux. They demonstrate how to create and configure an Aspire project, deploy its frontend, backend, and dashboard as App Service resources, and use the hosted Aspire Dashboard to understand the running application. They also explore how the Aspire agent integration can help generate the required configuration and simplify the deployment experience.


🌮 Chapter Markers:

0:00 – Introduction
1:45 – Creating an Aspire project
3:35 – Configuring AppHost for Azure App Service
9:15 – Exploring the deployed Azure resources
9:50 – Viewing resources in the Aspire Dashboard
11:05 – Running the sample application
12:00 – App Service configuration and service discovery
14:20 – Accessing the hosted Aspire Dashboard
16:00 – Aspire configuration and deployment guidance
17:45 – Aspire agent integration
19:35 – Wrap-up

🌮 Resources
Quickstart - Deploy an Aspire app: https://learn.microsoft.com/azure/app-service/quickstart-dotnet-aspire

Azure App Service: https://azure.microsoft.com/products/app-service/


🌮 Follow us on social:
Scott Hanselman | @SHanselman – https://x.com/SHanselman

Azure App Service | @AzAppService – https://x.com/AzAppService

Azure Friday | @AzureFriday – https://x.com/AzureFridayFollow us on social:
Blog - https://aka.ms/azuredevelopers/blog
Twitter - https://aka.ms/azuredevelopers/twitter
LinkedIn - https://aka.ms/azuredevelopers/linkedin
Twitch - https://aka.ms/azuredevelopers/twitch

#azuredeveloper #azure

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

The legal mistakes that can sink your startup before series A with Kristina Subbotina, Lexsy

1 Share

Setting up a sound legal foundation could be what saves a startup down the line. A missing founder vesting agreement, an unclear IP agreement, or a messy cap table can derail fundraising, spark co-founder disputes, or even kill an otherwise promising company before it has a chance to scale.

In this episode of Build Mode, host Isabelle Johannesen sits down with Kristina Subbotinai, founder and CEO of Lesxy and former startup attorney at Cooley, to break down the legal fundamentals every founder needs to get right. Kristina shares the four non-negotiable legal decisions every startup should make from day one, what investors actually look for during due diligence, how founders should think about negotiating control versus valuation, and why leverage is the key to getting better fundraising terms. She also shares real stories from the front lines of startup law, from co-founder breakups and investor negotiations to a founder who tried using ChatGPT to draft a merger agreement.

They get into:

  • The four legal mistakes that can make a startup unfundable

  • How founder vesting, IP assignment, Delaware incorporation, and 83(b) elections protect your company

  • What VCs actually look for during due diligence and how to avoid common red flags

  • How founders should negotiate valuation, board control, and investor rights

  • Why leverage comes from building a great business—not signing better term sheets

  • The wildest legal horror stories Kristina has seen, including a startup acquisition gone completely off the rails

Subscribe to Build Mode on Apple Podcasts⁠, ⁠Spotify⁠, or wherever you like to listen⁠. And watch the full videos on YouTube⁠. New episodes of ⁠Build Mode⁠ drop every Thursday. 

Chapters:00:00 – Intro: The Legal Mistakes That Kill Startups01:37 – Why Kristina built Lexsy03:58 – The Legal Foundations Every Startup Needs08:22 – How to Find the Right Startup Lawyer10:21 – The Four Non-Negotiable Legal Decisions17:33 – What Investors Look for During Due Diligence20:04 – SAFE Notes vs. Priced Rounds22:18 – Negotiating Valuation Without Losing Control25:25 – Board Seats, Investor Rights, and Hidden Term Sheet Traps30:51 – Should Founders Use AI for Legal Advice?31:04 – How Founders Build Leverage in Fundraising35:48 – The Terms That Can Destroy Founder Wealth37:01 – The Craziest Startup Legal Story Kristina Has Ever Seen

Hosted by Isabelle Johannessen. Produced and edited by Maggie Nye. Audience development led by Morgan Little. Special thanks to the Foundry and Cheddar video teams.






Download audio: https://www.podtrac.com/pts/redirect.mp3/traffic.megaphone.fm/TCML1273907824.mp3
Read the whole story
alvinashcraft
14 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Control iOS and Android Emulators Inside GitHub Copilot app Canvas

1 Share
From: JamesMontemagno
Duration: 8:15
Views: 180

Get the plugin - https://github.com/Redth/mobile-canvas-ghcp

Discover how to control iOS simulators and Android emulators directly inside GitHub Copilot Canvas. This brand-new mobile device plugin lets you launch, configure, and interact with your emulators while AI agents test features in real-time—all from one unified interface. See
how to install it in seconds and streamline your mobile development workflow.

00:00 Introduction to Mobile Device Plugin
02:30 Installing the Plugin
04:50 Interactive Testing Demo
07:22 Closing Remarks

Join this channel to get access to perks:
https://www.youtube.com/channel/UCENTmbKaTphpWV2R2evVz2A/join

👕 Buy some swag! - https://jamesmontemagno.myspreadshop.com/
☕️ Buy me a coffee - https://www.buymeacoffee.com/jamesmontemagno

Follow:
👨‍💻 GitHub: https://github.com/jamesmontemagno
🦜 X: https://x.com/jamesmontemagno
📄 Website: https://www.montemagno.com
📰 Newsletter: https://newsletter.montemagno.com/

Disclaimer: This channel, videos, and streams are created in my spare time and are a product of me... James Montemagno! They are NOT officially affiliated or endorsed by Microsoft (my employer) in any way. Opinions and views are my own.

What is on my hat? It is the CLE clothing logo because I am from Cleveland! Checkout their awesome CLE merch: https://cleclothingco.myshopify.com/

What is that art on my wall? It is an original piece from the French street artist Gregos of La Butte Montmartre: https://www.instagram.com/p/BceZ1oNHiQx/

My Setup:
ℹ️ My Icons: https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc-icons
📷 Canon M50 Mark II - https://amzn.to/3P8R7lp
💡 Nanoleaf Elements Lights - https://amzn.to/3umwJVW
🎙 Blue Spark Microphone - https://amzn.to/3qgtYkq
🎙 Blue Pop Filter - https://amzn.to/3jEWM3r
🤳 Rode Microphone Arm - https://amzn.to/2Z68AlE
🎧 Sony MDR7306 Headphones - https://amzn.to/372jxta
📲 Stream Deck - https://amzn.to/373Uk1n
🖱 MX Master 2S Mouse - https://amzn.to/3d7J2gj
⌨️ Tecware Phantom Keyboard - https://amzn.to/3aUP4y9

Using links I provide I may receive a commission if you buy something which helps support the channel.

Read the whole story
alvinashcraft
20 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

GitHub and Live Tiles

1 Share
From: Fritz's Tech Tips and Chatter
Duration: 1:09:39
Views: 88

I'm building an app with .NET MAUI and Live Tiles... you gotta see this!

Read the whole story
alvinashcraft
25 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Native AOT in Uno Platform: faster startup on five platforms

1 Share
&&
Performance Native AOT

By default, a .NET application ships as IL, an intermediate format that the .NET runtime translates into instructions your CPU can execute when the app launches, using a Just-In-Time (JIT) compiler. It works well, and it is why the same assembly can run on different machines. It also means a portion of your startup time is spent compiling.

Native Ahead-of-Time (AOT) moves that translation to publish time. Your code is compiled into machine code for a specific platform before it ever reaches a user's device, and the parts of the runtime your app actually uses are packaged with it.

Default PublishingNative AOT Publishing
When code is compiledAt runtime, as the app executesAt publish time
What shipsIL plus the runtimeMachine code for a target platform
Startup workRuntime loads and compiles ILApp starts executing directly
Build outputOne build serves multiple architecturesOne build per target platform
Runtime code generationAvailableNot available

The practical summary: you trade some flexibility at build time for speed at launch time.

Platform Support

6.6 Brings Native AOT to Android, iOS, Linux, macOS, and Windows

WebAssembly continues to use its existing publishing model.

iOS deserves a note up front. Apple prohibits JIT compilation, so an iOS build has always been compiled ahead of time. Until now that was Mono's FullAOT, which is part of MonoVM.

That distinction is why 6.6 matters on iOS beyond the stopwatch. Microsoft is consolidating .NET on CoreCLR: as of .NET 11 Preview 6, .NET MAUI builds for Android, iOS, and Mac Catalyst run on CoreCLR alone. Native AOT is a different implementation of the same ahead-of-time idea, built on the runtime the rest of .NET is converging on. What 6.6 adds on iOS is that model, which is also why the iOS numbers below move less than the rest.

Startup time is the first thing a user experiences, and it is one of the hardest things to improve after an application is already written. Native AOT improves it without asking you to restructure your app, change your architecture, or give up XAML and data binding.

Watch the 6.6 Community Standup on Native AOT

Uno Platform engineers discuss how it works and what it means for your applications.

Benchmarks

Uno.Chefs Cuts Startup Roughly in Half on Four of Five Platforms

The Native AOT documentation publishes startup figures for Uno.Chefs, our full reference application, on .NET 10. Chefs is a complete application with navigation, media, charts, and authentication, so the numbers come from a real workload.

PlatformDefault RuntimeStartup, DefaultStartup, Native AOTChange
AndroidMonoVM895 ms348 ms61% faster
iOSMonoVM940 ms742 ms21% faster
LinuxCoreCLR870 ms350 ms60% faster
macOSCoreCLR1347 ms555 ms59% faster
WindowsCoreCLR1605 ms824 ms49% faster

Actual startup times vary with hardware, so read these as direction.

iOS gains the least, for the reason above, and the runtime column shows it. Mono has already compiled that build ahead of time, so Native AOT has far less compilation work left to remove. On the four platforms that do JIT by default, startup lands between 39% and 51% of the default figure.

A Smaller App Gains 3.5x on Desktop and 2.7x on Android

Chefs is a large app. To see whether the same gains show up at a more ordinary scale, we also measured Build Pulse, a modest CI dashboard: one list of 750 records, a detail page, a settings page, MVUX state, and region-based navigation. Median of 20 launches per configuration on .NET 10.

PlatformBuildFirst FrameInteractiveMemory
Desktop (Windows)Managed1045 ms2151 ms282 MB
Desktop (Windows)Native AOT300 ms546 ms212 MB
AndroidManaged1768 ms2979 ms400 MB
AndroidNative AOT654 ms1082 ms301 MB

Desktop launches were 3.5x faster to first frame and 3.9x faster to interactive; Android was 2.7x on both. Memory dropped about 25% on each platform.

The Gain More Than Doubles Between First Frame and Interactive

The two columns above measure different things, and the difference is the interesting part.

First frame is the first pixels on screen. Interactive is the point where data has loaded, layout is done, and the app responds to a tap.

On desktop, Native AOT improved first frame by 745 ms and interactive by 1605 ms. The gap widens because the work between those two markers, parsing XAML, resolving bindings, loading data, and running layout, is exactly the kind of managed code the JIT has to compile before it can run. A XAML application does a lot of that work in its first second, which is why the benefit here tends to be larger than it would be for a small console tool.

Launch Variance Drops from 206 ms to 66 ms

Across 20 desktop runs, Native AOT varied by 66 ms between fastest and slowest first frame. The managed build varied by 206 ms.

With no JIT warm-up in the picture, consecutive launches land nearly on top of each other. For demos, kiosks, and anything else where a slow launch is visible to an audience, that consistency is worth as much as the average.

Setup

Your Project Stays the Same; Only Publishing Changes

You keep the project you already have. Same XAML, same C#, same MVUX or MVVM code, same single-project structure. Native AOT applies when you publish, so your daily development loop, including Hot Reload, stays on the standard model.

1. Add One Property to Your Project File

Set PublishAot in your .csproj:

.csproj
<PropertyGroup>
  <PublishAot>true</PublishAot>
</PropertyGroup>

Putting it in the project file, and not on the command line, also turns on compatibility analysis during regular builds, so you see problems while you are working instead of at publish time.

2. Publish Per Platform and Scope the RID with -p:PublishRid

Native AOT produces machine code, so you publish per platform and architecture:

PowerShell
dotnet publish -f net10.0-desktop -c Release -p:PublishRid=win-x64

Pass the runtime identifier through -p:PublishRid instead of the global -r flag. In a multi-targeted Uno Platform project, a global -r leaks into the restore of the other target frameworks, where it will try to resolve a runtime pack that does not exist for that platform. Scoping it this way keeps each target framework resolving its own runtime.

Repeat for each platform you ship.

3. Fix the Trim Warnings, Then Exercise Every Flow

The build tells you when something in your app or its dependencies is not compatible. Trim and AOT warnings are work to do: they point at code that may be removed from the final binary. Then launch the app and exercise your main flows, especially anything that loads data or navigates dynamically.

Native AOT on Android emits an XA1040 warning. This is expected and does not indicate a broken publish.

Publish, review warnings, test, and repeat per target.

Trade-offs

Publishes Take Up to 12x Longer and Packages Usually Grow

Trade-offWhat It Means for You
Longer publish timesSubstantially longer. Compiling to machine code is real work.
One build per platformYou publish separately for each target platform and architecture.
No runtime code generationAnything that emits or compiles code while the app runs will not work.
Reflection has limitsCode discovered only at runtime may be trimmed away. Source-generated alternatives are the reliable path.
Larger packages, usuallySize typically grows. See the numbers below.

In the Uno.Chefs figures, the Native AOT publish is 17% larger on Android, 18% on Linux, 39% on Windows, and 41% on macOS. iOS is the exception at 12% smaller.

Publish time is the trade most teams feel first. In our Build Pulse measurements, a desktop publish went from 19 seconds to 234, and an Android publish from 197 seconds to 677, roughly 12x and 3.4x. That cost lands in your release pipeline and not in your day: debug builds stay on the managed model, so your inner development loop is unaffected.

The runtime code generation row lands hardest on iOS teams, for a reason specific to how they got there. MonoVM paired FullAOT with an IL interpreter, so code the AOT compiler could not handle had somewhere to fall back to. Native AOT has no interpreter and no equivalent. An iOS build that leans on that fallback needs a code change, not a publish setting.

MVUX and Source-Generated Serialization Survived Trimming Untouched

The documentation is explicit that an application may require changes to run under Native AOT, and that some dependency sets rule it out entirely. Build Pulse was the easy case, and it is worth understanding why.

It published and ran under Native AOT with no [Bindable] attributes, no [DynamicDependency] annotations, and no preservation hints anywhere in its source. MVUX source-generated bindable proxies, value converters, region-based navigation, record-passing between pages, and two-way bound state all survived trimming untouched.

The Condition

Those pieces survived because they are visible to the trimmer as ordinary compiled code: MVUX generates its bindings at compile time, and the app serialized its data through a source-generated JsonSerializerContext instead of reflection. An application that resolves types by name at runtime, or relies on reflection-based serialization, has more work ahead of it.

Uno Platform also preserves property references used by XAML binding expressions automatically during the build, so the bindings in your pages keep working without manual annotation.

Across a full pass over every screen and interaction in the app, the Native AOT build behaved identically to the managed one.

When to Use

Use Native AOT When Startup Is Visible; Stay on the Default While Iterating

Reach for Native AOT WhenStay on the Default Model When
Startup time is something users notice or complain aboutYour app already starts fast enough
You are shipping to mobile devices or kiosks where launch speed is visibleYou are early in development and iterating rapidly
Consistent launch time matters, such as demos or kiosk displaysYour publish process is already tight on time
Your dependency list is small and modernYou depend on libraries that generate code or lean heavily on reflection

Native AOT is an option you turn on when the trade favors your application.

Prerequisites

NDK r27, the Visual Studio C++ Workload, and Xcode

  • Android requires NDK r27 or later, in addition to the usual .NET for Android requirements.
  • Windows requires the Visual Studio C++ desktop workload, because Native AOT uses the platform linker and C++ static runtime libraries.
  • Apple platforms require the standard Xcode toolchain you already use for iOS and macOS builds.
  • Linux requires the native toolchain listed in the .NET prerequisites.

Full prerequisites, per-platform notes, and the current list of limitations are in the Native AOT documentation.

Get Started

Try It on Uno.Chefs, Then Measure Your Own App

  1. Try it on Uno.Chefs, a complete application already configured for Native AOT, and a safe place to see the publish flow end to end before touching your own project.

Questions, results from your own applications, or problems you run into are welcome on our Discord or GitHub.

&

The post Native AOT in Uno Platform: faster startup on five platforms appeared first on Uno Platform.

Read the whole story
alvinashcraft
35 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

How to Build Headless .NET Apps with ComponentOne Data Services

1 Share
Learn how to build headless .NET apps with ComponentOne Data Services. See more and get started today. Continue reading
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories