'ProjectReference' not working properly in a multi-target project
See original GitHub issueHi all, I’m working on a test project that has multiple targets netcoreapp3.1
, net5.0
, and net6.0
.
- For the targets
netcoreapp3.1
andnet5.0
, the test project needs to reference to NuGet packagesMicrosoft.PowerShell.SDK
version7.0.6
(targeting 3.1) and7.1.3
(targeting 5.0) respectively. - For the target
net6.0
, the test project needs to reference the library projectMicrosoft.PowerShell.SDK.csproj
, which lives in the same repo.
So the .csproj file for the test project looks like this (see the the complete version of this file here, in my temp branch):
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>
<PropertyGroup>
<!-- other properties -->
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
<ProjectReference Include="../../../src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj" />
<ProjectReference Include="../../../src/Microsoft.PowerShell.Commands.Diagnostics/Microsoft.PowerShell.Commands.Diagnostics.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.1.3" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.0.6" />
</ItemGroup>
</Project>
It looks simple, but dotnet restore
fails with the following errors:
error NU1201: Project Microsoft.PowerShell.Commands.Diagnostics is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1).
Project Microsoft.PowerShell.Commands.Diagnostics supports: net6.0 (.NETCoreApp,Version=v6.0)
error NU1201: Project Microsoft.PowerShell.Commands.Management is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1)
Project Microsoft.PowerShell.Commands.Management supports: net6.0 (.NETCoreApp,Version=v6.0)
error NU1201: Project Microsoft.PowerShell.Commands.Utility is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1).
Project Microsoft.PowerShell.Commands.Utility supports: net6.0 (.NETCoreApp,Version=v6.0)
error NU1201: Project Microsoft.PowerShell.ConsoleHost is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1).
Project Microsoft.PowerShell.ConsoleHost supports: net6.0 (.NETCoreApp,Version=v6.0)
error NU1201: Project Microsoft.PowerShell.Security is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1).
Project Microsoft.PowerShell.Security supports: net6.0 (.NETCoreApp,Version=v6.0)
error NU1201: Project System.Management.Automation is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1).
Project System.Management.Automation supports: net6.0 (.NETCoreApp,Version=v6.0)
======= Same errors repeated for net5.0 ========
(NOTE: the projects Microsoft.PowerShell.Commands.Management
, Microsoft.PowerShell.Commands.Utility
, and etc are dependencies of Microsoft.PowerShell.SDK.csproj
, and they are all targeting net6.0
currently)
The ProjectReference to Microsoft.PowerShell.SDK.csproj
and Microsoft.PowerShell.Commands.Diagnostics.csproj
are grouped in a ItemGroup
with the condition "'$(TargetFramework)' == 'net6.0'"
, so why was dotnet restore
checking compatibility for those project references with netcoreapp3.1 and net5.0? Can someone please suggest how to make this work?
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:14 (4 by maintainers)
Top GitHub Comments
Here’s my scenario: Class library is targeting:
I have a UWP class library project with a project reference to the above, and I’ll get warnings like this:
All projects use the SDK-style project types.
I’m having a similar issue with referencing a multi-target project. The work around mentioned above worked for me.