Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System.InvalidOperationException: No instances of MSBuild could be detected #245

Open
WenningQiu opened this issue Feb 29, 2024 · 7 comments

Comments

@WenningQiu
Copy link

WenningQiu commented Feb 29, 2024

I am getting the following error when running "dotnet rpm" command:

C:\work\git\infra\frameworkccs>dotnet rpm Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj --no-restore -r linux-x64 -f net6.0 -c Release -o LocalStaging
Unhandled exception. System.InvalidOperationException: No instances of MSBuild could be detected.
Try calling RegisterInstance or RegisterMSBuildPath to manually register one.
   at Microsoft.Build.Locator.MSBuildLocator.RegisterDefaults()
   at Dotnet.Packaging.PackagingRunner..ctor(String outputName, String msbuildTarget, String commandName) in /__w/1/s/dotnet-rpm/PackagingRunner.cs:line 29
   at Dotnet.Packaging.Program.Main(String[] args) in /__w/1/s/dotnet-rpm/Program.cs:line 7

What does that mean and how do I get around it? Thanks in advance for any suggestion.

I am on dotnet-rpm version 0.1.220.

@atauenis
Copy link

atauenis commented Mar 1, 2024

Which versions of .NET SDK are installed? dotnet --info

@WenningQiu
Copy link
Author

.NET 8.

C:\work\git\infra\frameworkccs>dotnet --list-sdks
8.0.100 [C:\Program Files\dotnet\sdk]

@WenningQiu
Copy link
Author

WenningQiu commented Mar 1, 2024

More information...

  • We were upgrading from version 0.1.189 as it requires .NET 5 runtime which no longer exists in our build environment.
  • In an environment where .NET 5 runtime is available, the last working version is 0.1.198. It breaks starting at 0.1.199.

My local machine environment where I test different versions:

C:\work\git\infra\frameworkccs>dotnet --info
.NET SDK:
 Version:           8.0.100
 Commit:            57efcf1350
 Workload version:  8.0.100-manifests.8d38d0cc

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19044
 OS Platform: Windows
 RID:         win-x64
 Base Path:   C:\Program Files\dotnet\sdk\8.0.100\

.NET workloads installed:
 Workload version: 8.0.100-manifests.8d38d0cc
 [maui-windows]
   Installation Source: VS 17.8.34330.188
   Manifest Version:    8.0.3/8.0.100
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maui\8.0.3\WorkloadManifest.json
   Install Type:              Msi

 [maccatalyst]
   Installation Source: VS 17.8.34330.188
   Manifest Version:    17.0.8478/8.0.100
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maccatalyst\17.0.8478\WorkloadManifest.json
   Install Type:              Msi

 [ios]
   Installation Source: VS 17.8.34330.188
   Manifest Version:    17.0.8478/8.0.100
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.ios\17.0.8478\WorkloadManifest.json
   Install Type:              Msi

 [android]
   Installation Source: VS 17.8.34330.188
   Manifest Version:    34.0.43/8.0.100
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.android\34.0.43\WorkloadManifest.json
   Install Type:              Msi


Host:
  Version:      8.0.0
  Architecture: x64
  Commit:       5535e31a71

.NET SDKs installed:
  8.0.100 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
  x86   [C:\Program Files (x86)\dotnet]
    registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

@WenningQiu
Copy link
Author

WenningQiu commented Mar 1, 2024

I am making progress after some debugging and test:

  1. I have to remove .NET 5 runtime on my machine in order for dotnet-rpm to use the .NET 6 version.
  2. Then I have to install .NET 6 SDK to get past "No instances of MSBuild could be detected" error.

@WenningQiu
Copy link
Author

Now I am seeing following errors on one of our build machines:

[exec] Starting 'dotnet (rpm d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj -r linux-x64 -f net6.0 -c Release -o d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\LocalStaging)' in 'd:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\SCM'
                 [exec] dotnet rpm (0.1.220+3f7bd3c61a)
                 [exec] MSBuild version 17.8.3+195e7f5a3 for .NET
                 [exec]   Framework.CCS.RegionStatus.Daemon -> d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\bin\Release\net6.0\linux-x64\CSG.Framework.CCS.RegionStatus.Daemon.dll
                 [exec]   Framework.CCS.RegionStatus.Daemon -> d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\bin\Release\net6.0\linux-x64\publish\
                 [exec]   Creating RPM package d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\LocalStaging\CSG.Framework.CCS.RegionStatus.Daemon.24.2.0.19.linux-x64.rpm
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018: The "RpmTask" task failed unexpectedly. [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018: System.ArgumentException: Specified preset is not supported [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Packaging.Targets.IO.XZOutputStream.Write(Byte[] buffer, Int32 offset, Int32 count) [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize) [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Packaging.Targets.Rpm.RpmPackageCreator.CreatePackage(List`1 archiveEntries, Stream payloadStream, String name, String version, String arch, String release, Boolean createUser, String userName, Boolean installService, String serviceName, String vendor, String description, String url, String prefix, String preInstallScript, String postInstallScript, String preRemoveScript, String postRemoveScript, IEnumerable`1 additionalDependencies, Action`1 additionalMetadata, IPackageSigner signer, Stream targetStream, Boolean includeVersionInName, Boolean payloadIsCompressed) [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Packaging.Targets.Rpm.RpmPackageCreator.CreatePackage(List`1 archiveEntries, Stream payloadStream, String name, String version, String arch, String release, Boolean createUser, String userName, Boolean installService, String serviceName, String vendor, String description, String url, String prefix, String preInstallScript, String postInstallScript, String preRemoveScript, String postRemoveScript, IEnumerable`1 additionalDependencies, Action`1 additionalMetadata, PgpPrivateKey privateKey, Stream targetStream) [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Packaging.Targets.RpmTask.Execute() [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] D:\Cache\.nuget\packages\packaging.targets\0.1.189\build\Packaging.Targets.targets(92,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\Src\Tool\Framework.CCS.RegionStatus.Daemon\Framework.CCS.RegionStatus.Daemon.csproj]
                 [exec] d:\Jenkins\workspace\24.2.0.0.0-ACPx-FrameworkCCS-DSM\SCM\FrameworkCCS.build(45,8):
                 [exec] External Program Failed: dotnet (return code was 1)

@MTeichlerRche
Copy link

MTeichlerRche commented Sep 11, 2024

I could at least solve the "Preset not supported" error by going back all the way to version 0.1.70. I just jumped back 10 version at a time until the error went away, so I have no idea on which version the error was introduced, and I don't frankly care, I just care about the .deb package.

Edit: Celebrated too early, turns out that the package has unmet dependencies. But it doesn't say which.

@atauenis
Copy link

"Preset not supported" error

Try completely uninstall .NET and .NET SDK with everything, purge all its configuration files and registry entries, and then install back (also complete OS reinstall may be useful, if there is something broken by a buggy update previously installed). I'm using latest dotnet-packaging, and all is working on all machines where I'm doing my development process. Seems that this is .NET SDK-caused error, so, the old well default tip for every Microsoft product may be useful.

turns out that the package has unmet dependencies. But it doesn't say which.

It is bug of older versions of dotnet-packaging, which are producing packages for now obsolete versions of distributions. Every Linux distro update the libicu-** package gets renamed somewhy, and all packages became broken. I've fixed it in my app's csproj by adding a long list with 52-80 versions of it, which should be enough for near years. Also libssl package name were changed at some time (OpenSSL 1.1 -> 3.0), so need to keep both versions in dependency list. This is handled in latest dotnet-package versions, but it's better to handle it by your csproj.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants