dotnet / dotnet/sdk

dotnet restore --getProperty:ProjectAssetsFile returns an empty string for multi targeted projects

Open
#49,426 2 comments 0 reactions 1 assignee Claimed by @MiYanni View on GitHub
Area-CLI cli-ux untriaged
Dominant language
C#
Stars
3.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

### Describe the bug

The `--getProperty` option of `dotnet` commands is supposed to return the specified property as JSON. But performing `dotnet restore --getProperty:ProjectAssetsFile` on a multi targeted project returns an empty string.

I wonder if it's related to #38956.

### To Reproduce

1. Create a project file with multiple target frameworks

**MyLibrary.csproj**

```xml


net8.0;net9.0

```

2. Run the following command

```sh
dotnet restore MyLibrary.csproj --getProperty:ProjectAssetsFile --getProperty:TargetFrameworks
```

This produces the following output. Notice how `ProjectAssetsFile` is an empty string.

```json
{
"Properties": {
"ProjectAssetsFile": "",
"TargetFrameworks": "net8.0;net9.0"
}
}
```

### Workaround

I found a workaround by adding `--getTargetResult:_LoadRestoreGraphEntryPoints` to the restore command.

```sh
dotnet restore MyLibrary.csproj --getProperty:ProjectAssetsFile --getProperty:TargetFrameworks -getTargetResult:_LoadRestoreGraphEntryPoints
```

Now the `ProjectAssetsFile` has a valid value!

But I don't really like depending on the undocumented `_LoadRestoreGraphEntryPoints` target and on what seems to be a side effect!

```json
{
"Properties": {
"ProjectAssetsFile": "/private/tmp/MyLibrary/obj/project.assets.json",
"TargetFrameworks": "net8.0;net9.0"
},
"TargetResults": {
"_LoadRestoreGraphEntryPoints": {
"Result": "Success",
"Items": [
{
"Identity": "/private/tmp/MyLibrary/MyLibrary.csproj",
"FullPath": "/private/tmp/MyLibrary/MyLibrary.csproj",
"RootDir": "/",
"Filename": "MyLibrary",
"Extension": ".csproj",
"RelativeDir": "/private/tmp/MyLibrary/",
"Directory": "private/tmp/MyLibrary/",
"RecursiveDir": "",
"ModifiedTime": "2025-06-16 22:48:27.8055988",
"CreatedTime": "2025-06-16 22:47:50.9395942",
"AccessedTime": "2025-06-16 22:48:27.8879172",
"DefiningProjectFullPath": "/usr/local/share/dotnet/sdk/9.0.301/NuGet.targets",
"DefiningProjectDirectory": "/usr/local/share/dotnet/sdk/9.0.301/",
"DefiningProjectName": "NuGet",
"DefiningProjectExtension": ".targets"
}
]
}
}
}
```

### Further technical details

dotnet --info

```
.NET SDK:
Version: 9.0.301
Commit: a596cd22e2
Workload version: 9.0.300-manifests.b2ed98c7
MSBuild version: 17.14.5+edd3bbf37

Runtime Environment:
OS Name: Mac OS X
OS Version: 14.7
OS Platform: Darwin
RID: osx-arm64
Base Path: /usr/local/share/dotnet/sdk/9.0.301/

.NET workloads installed:
There are no installed workloads to display.
Configured to use loose manifests when installing new manifests.

Host:
Version: 9.0.6
Architecture: arm64
Commit: 3875b54e7b

.NET SDKs installed:
6.0.428 [/usr/local/share/dotnet/sdk]
8.0.411 [/usr/local/share/dotnet/sdk]
9.0.301 [/usr/local/share/dotnet/sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.36 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.17 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 9.0.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.36 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.17 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 9.0.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
x64 [/usr/local/share/dotnet/x64]
registered at [/etc/dotnet/install_location_x64]

Environment variables:
Not set

global.json file:
Not found

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

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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.