Skip to content

*nuget.g.targets contents can be inconsistent #14826

@jonpryor

Description

@jonpryor

NuGet Product Used

dotnet.exe

Product Version

10.0.201

Worked before?

No response

Impact

It bothers me. A fix would be nice

Repro Steps & Context

dotnet restore and dotnet publish can produce different contents in $(IntermediateOutputPath)*.nuget.g.targets.

I'd love to know why, and what can be done to fix it.

The setup:

  1. Run on macOS. (I haven't tested elsewhere.)

  2. Install Uno Platform, VSCode

  3. Create a new project:

    dotnet new unoapp -o unoapp -preset recommended
    
  4. Initialize as a git repo:

    cd unoapp
    git init .
    git add .
    git commit -m 'dotnet new unoapp -o unoapp -preset recommended'
  5. Cause unoapp/obj/unoapp.csproj.nuget.g.targets to be generated by both dotnet restore and dotnet publish at the "same" time:

    git clean -xdf ; 
    dotnet publish -c Release -r android-x64 -f net10.0-android -bl unoapp/unoapp.csproj -p:PublishAot=true &
    dotnet restore ; fg

    Make sure you copy and paste all the commands at once. We want the dotnet publish and dotnet restore commands to execute as close to the same time as possible.

    Interestingly, reversing the order -- dotnet restore & dotnet publish … -- doesn't result in build errors (as often?).

If you're "lucky", the build will fail 1:

$HOME/.nuget/packages/microsoft.dotnet.ilcompiler/10.0.5/build/Microsoft.NETCore.Native.Publish.targets(91,5): error MSB3030: Could not copy the file "bin/Release/net10.0-android/android-x64/native/unoapp.so" because it was not found.

The cause of the MSB3030 error is that the IlcCompile target doesn't exist (?!):

% dotnet build -v:diag msbuild.binlog > msbuild.binlog.txt
% grep '"IlcCompile"' msbuild.binlog.txt
                   The target "IlcCompile" listed in an AfterTargets attribute at "/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/36.1.43/targets/Microsoft.Android.Sdk.NativeAOT.targets (205,7)" does not exist in the project, and will be ignored.

which is problematic, because it's the IlcCompile target which is responsible for creating unoapp.so

If you don't run dotnet restore and dotnet publish at the "same" time, the build will reliably succeed.

Additionally, the contents of unoapp/obj/unoapp.csproj.nuget.g.targets changes between dotnet restore and dotnet publish:

git clean -xdf
dotnet restore
cp unoapp/obj/unoapp.csproj.nuget.g.targets restored.targets
dotnet publish -c Release -r android-x64 -f net10.0-android -bl unoapp/unoapp.csproj -p:PublishAot=true
cp unoapp/obj/unoapp.csproj.nuget.g.targets published.targets
diff -u restored.targets published.targets
--- restored.targets	2026-03-25 15:49:43
+++ published.targets	2026-03-25 15:53:35
@@ -74,14 +74,11 @@
     <Import Project="$(NuGetPackageRoot)uno.winui.runtime.skia.android/6.5.64/build/Uno.WinUI.Runtime.Skia.Android.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.runtime.skia.android/6.5.64/build/Uno.WinUI.Runtime.Skia.Android.targets')" />
     <Import Project="$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets" Condition="Exists('$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets')" />
@@ -110,52 +107,6 @@
     <Import Project="$(NuGetPackageRoot)uno.extensions.authentication/7.1.1/buildTransitive/Uno.Extensions.Authentication.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.authentication/7.1.1/buildTransitive/Uno.Extensions.Authentication.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.dsp.tasks/1.4.0/build/Uno.Dsp.Tasks.targets" Condition="Exists('$(NuGetPackageRoot)uno.dsp.tasks/1.4.0/build/Uno.Dsp.Tasks.targets')" />
   </ImportGroup>
-  <ImportGroup Condition=" '$(TargetFramework)' == 'net10.0-browserwasm' AND '$(ExcludeRestorePackageImports)' != 'true' ">
-    <Import Project="$(NuGetPackageRoot)uno.winui/6.5.64/buildTransitive/net9.0/uno.winui.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui/6.5.64/buildTransitive/net9.0/uno.winui.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.icu-wasm/77.1.2/buildTransitive/Uno.icu-wasm.targets" Condition="Exists('$(NuGetPackageRoot)uno.icu-wasm/77.1.2/buildTransitive/Uno.icu-wasm.targets')" />
-    <Import Project="$(NuGetPackageRoot)skiasharp.nativeassets.webassembly/3.119.1/buildTransitive/netstandard1.0/SkiaSharp.NativeAssets.WebAssembly.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.nativeassets.webassembly/3.119.1/buildTransitive/netstandard1.0/SkiaSharp.NativeAssets.WebAssembly.targets')" />
-    <Import Project="$(NuGetPackageRoot)harfbuzzsharp.nativeassets.webassembly/8.3.1.1/buildTransitive/netstandard1.0/HarfBuzzSharp.NativeAssets.WebAssembly.targets" Condition="Exists('$(NuGetPackageRoot)harfbuzzsharp.nativeassets.webassembly/8.3.1.1/buildTransitive/netstandard1.0/HarfBuzzSharp.NativeAssets.WebAssembly.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.runtime.skia.webassembly.browser/6.5.64/build/Uno.WinUI.Runtime.Skia.WebAssembly.Browser.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.runtime.skia.webassembly.browser/6.5.64/build/Uno.WinUI.Runtime.Skia.WebAssembly.Browser.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.wasm.bootstrap/10.0.22/build/Uno.Wasm.Bootstrap.targets" Condition="Exists('$(NuGetPackageRoot)uno.wasm.bootstrap/10.0.22/build/Uno.Wasm.Bootstrap.targets')" />
-    <Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
-    <Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets" Condition="Exists('$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.sdk.extras/6.3.1/buildTransitive/Uno.Sdk.Extras.targets" Condition="Exists('$(NuGetPackageRoot)uno.sdk.extras/6.3.1/buildTransitive/Uno.Sdk.Extras.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.resizetizer/1.12.1/build/Uno.Resizetizer.targets" Condition="Exists('$(NuGetPackageRoot)uno.resizetizer/1.12.1/build/Uno.Resizetizer.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.fonts.opensans/2.8.1/buildTransitive/net7.0/Uno.Fonts.OpenSans.targets" Condition="Exists('$(NuGetPackageRoot)uno.fonts.opensans/2.8.1/buildTransitive/net7.0/Uno.Fonts.OpenSans.targets')" />
-    <Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.2/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.2/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets')" />
-    <Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.9/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.9/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.core/7.1.1/buildTransitive/Uno.Extensions.Core.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.core/7.1.1/buildTransitive/Uno.Extensions.Core.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.serialization/7.1.1/buildTransitive/Uno.Extensions.Serialization.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.serialization/7.1.1/buildTransitive/Uno.Extensions.Serialization.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.storage/7.1.1/buildTransitive/Uno.Extensions.Storage.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.storage/7.1.1/buildTransitive/Uno.Extensions.Storage.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.hosting/7.1.1/buildTransitive/Uno.Extensions.Hosting.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.hosting/7.1.1/buildTransitive/Uno.Extensions.Hosting.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.configuration/7.1.1/buildTransitive/Uno.Extensions.Configuration.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.configuration/7.1.1/buildTransitive/Uno.Extensions.Configuration.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.storage.winui/7.1.1/buildTransitive/Uno.Extensions.Storage.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.storage.winui/7.1.1/buildTransitive/Uno.Extensions.Storage.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)refit/7.2.22/buildTransitive/netstandard2.0/refit.targets" Condition="Exists('$(NuGetPackageRoot)refit/7.2.22/buildTransitive/netstandard2.0/refit.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.serialization.refit/7.1.1/buildTransitive/Uno.Extensions.Serialization.Refit.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.serialization.refit/7.1.1/buildTransitive/Uno.Extensions.Serialization.Refit.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.http/7.1.1/buildTransitive/Uno.Extensions.Http.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.http/7.1.1/buildTransitive/Uno.Extensions.Http.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.serialization.http/7.1.1/buildTransitive/Uno.Extensions.Serialization.Http.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.serialization.http/7.1.1/buildTransitive/Uno.Extensions.Serialization.Http.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.reactive/7.1.1/buildTransitive/Uno.Extensions.Reactive.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.reactive/7.1.1/buildTransitive/Uno.Extensions.Reactive.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.reactive.winui/7.1.1/buildTransitive/Uno.Extensions.Reactive.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.reactive.winui/7.1.1/buildTransitive/Uno.Extensions.Reactive.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.reactive.messaging/7.1.1/buildTransitive/Uno.Extensions.Reactive.Messaging.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.reactive.messaging/7.1.1/buildTransitive/Uno.Extensions.Reactive.Messaging.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.navigation/7.1.1/buildTransitive/Uno.Extensions.Navigation.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.navigation/7.1.1/buildTransitive/Uno.Extensions.Navigation.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.navigation.winui/7.1.1/buildTransitive/Uno.Extensions.Navigation.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.navigation.winui/7.1.1/buildTransitive/Uno.Extensions.Navigation.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.navigation.toolkit.winui/7.1.1/buildTransitive/Uno.Extensions.Navigation.Toolkit.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.navigation.toolkit.winui/7.1.1/buildTransitive/Uno.Extensions.Navigation.Toolkit.WinUI.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.localization/7.1.1/buildTransitive/Uno.Extensions.Localization.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.localization/7.1.1/buildTransitive/Uno.Extensions.Localization.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.extensions.authentication/7.1.1/buildTransitive/Uno.Extensions.Authentication.targets" Condition="Exists('$(NuGetPackageRoot)uno.extensions.authentication/7.1.1/buildTransitive/Uno.Extensions.Authentication.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.dsp.tasks/1.4.0/build/Uno.Dsp.Tasks.targets" Condition="Exists('$(NuGetPackageRoot)uno.dsp.tasks/1.4.0/build/Uno.Dsp.Tasks.targets')" />
-    <Import Project="$(NuGetPackageRoot)microsoft.net.sdk.webassembly.pack/10.0.5/build/Microsoft.NET.Sdk.WebAssembly.Pack.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.net.sdk.webassembly.pack/10.0.5/build/Microsoft.NET.Sdk.WebAssembly.Pack.targets')" />
-  </ImportGroup>
   <ImportGroup Condition=" '$(TargetFramework)' == 'net10.0-desktop' AND '$(ExcludeRestorePackageImports)' != 'true' ">
     <Import Project="$(NuGetPackageRoot)uno.winui/6.5.64/buildTransitive/net9.0/uno.winui.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui/6.5.64/buildTransitive/net9.0/uno.winui.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.winui.runtime.skia.x11/6.5.64/buildTransitive/Uno.WinUI.Runtime.Skia.X11.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.runtime.skia.x11/6.5.64/buildTransitive/Uno.WinUI.Runtime.Skia.X11.targets')" />
@@ -166,7 +117,6 @@
     <Import Project="$(NuGetPackageRoot)uno.icu-macos/77.1.2/buildTransitive/Uno.icu-macos.targets" Condition="Exists('$(NuGetPackageRoot)uno.icu-macos/77.1.2/buildTransitive/Uno.icu-macos.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.winui.runtime.skia.macos/6.5.64/buildTransitive/Uno.WinUI.Runtime.Skia.MacOS.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.runtime.skia.macos/6.5.64/buildTransitive/Uno.WinUI.Runtime.Skia.MacOS.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets')" />
@@ -174,8 +124,6 @@
     <Import Project="$(NuGetPackageRoot)skiasharp.nativeassets.webassembly/3.119.1/buildTransitive/netstandard1.0/SkiaSharp.NativeAssets.WebAssembly.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.nativeassets.webassembly/3.119.1/buildTransitive/netstandard1.0/SkiaSharp.NativeAssets.WebAssembly.targets')" />
     <Import Project="$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets" Condition="Exists('$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets')" />
@@ -212,14 +160,11 @@
     <Import Project="$(NuGetPackageRoot)uno.winui.runtime.skia.appleuikit/6.5.64/build/Uno.WinUI.Runtime.Skia.AppleUIKit.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.runtime.skia.appleuikit/6.5.64/build/Uno.WinUI.Runtime.Skia.AppleUIKit.targets')" />
     <Import Project="$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)skiasharp.views.uno.winui/3.119.1/buildTransitive/net8.0/SkiaSharp.Views.Uno.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.lottie/6.5.64/buildTransitive/Uno.WinUI.Lottie.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.winui.devserver/6.5.64/buildTransitive/Uno.WinUI.DevServer.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
     <Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.2/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui/8.4.2/buildTransitive/Uno.Toolkit.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.themes.winui/6.1.1/buildTransitive/Uno.Themes.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets" Condition="Exists('$(NuGetPackageRoot)communitytoolkit.mvvm/8.4.0/buildTransitive/CommunityToolkit.Mvvm.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.hotdesign/1.18.60/build/Uno.UI.HotDesign.targets')" />
-    <Import Project="$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets" Condition="Exists('$(NuGetPackageRoot)uno.ui.app.mcp/1.1.3/buildTransitive/Uno.UI.App.Mcp.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets" Condition="Exists('$(NuGetPackageRoot)uno.material.winui/6.1.1/buildTransitive/Uno.Material.WinUI.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets" Condition="Exists('$(NuGetPackageRoot)uno.toolkit.winui.material/8.4.2/buildTransitive/Uno.Toolkit.WinUI.Material.targets')" />
     <Import Project="$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets" Condition="Exists('$(NuGetPackageRoot)uno.settings.devserver/1.7.6/buildTransitive/Uno.Settings.DevServer.targets')" />

Why does unoapp.csproj.nuget.g.targets differ between dotnet restore and dotnet publish? My assumption is that if the contents didn't change, my "same time" builds would be more reliable.

Why I care

Why do I care? Who would be "silly" enough to run dotnet restore and dotnet publish at the same time?

The probable answer is a VSCode extension. I haven't figured out which extension yet, but if I open the unoapp folder within VSCode, then in a separate Terminal run:

git clean -xdf ; dotnet publish …

it will very often fail, driving me bananas. My assumption is that some VSCode extension is also running dotnet restore when it detects that the directory has changed, resulting in "concurrent" dotnet restore and dotnet publish invocations.

Verbose Logs

Footnotes

  1. It may alternatively fail with:

    $HOME/.nuget/packages/uno.winui/6.6.0-dev.129/buildTransitive/uno.winui.runtime-replace.targets(53,3): error MSB4018: 
      The "RuntimeAssetsSelectorTask_f6d55e04b2d97dcb6e7dca06fbf69fe8578d5375" task failed unexpectedly.
      System.Exception: System.InvalidOperationException: Sequence contains no matching element
         at System.Linq.ThrowHelper.ThrowNoMatchException()
         at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
         at Uno.UI.Tasks.RuntimeAssetsSelector.RuntimeAssetsSelectorTask_f6d55e04b2d97dcb6e7dca06fbf69fe8578d5375.HandleForRuntimeEnabled(ITaskItem package, List`1 runtimeCopyLocalItemsToAdd, List`1 runtimeCopyLocalItemsToRemove, List`1 compileFileDefinitionsToAdd, List`1 compileFileDefinitionsToRemove, List`1 pdbFilesToAdd, Boolean isTwoLayer) in C:\a\1\s\src\SourceGenerators\Uno.UI.Tasks\RuntimeAssetsSelector\RuntimeAssetsSelectorTask.cs:line 392
         at Uno.UI.Tasks.RuntimeAssetsSelector.RuntimeAssetsSelectorTask_f6d55e04b2d97dcb6e7dca06fbf69fe8578d5375.Execute() in C:\a\1\s\src\SourceGenerators\Uno.UI.Tasks\RuntimeAssetsSelector\RuntimeAssetsSelectorTask.cs:line 140
         at Uno.UI.Tasks.RuntimeAssetsSelector.RuntimeAssetsSelectorTask_f6d55e04b2d97dcb6e7dca06fbf69fe8578d5375.Execute() in C:\a\1\s\src\SourceGenerators\Uno.UI.Tasks\RuntimeAssetsSelector\RuntimeAssetsSelectorTask.cs:line 160
         at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(TaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
    

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions