If a project use multiple paket group for dependencies, the project build incorrectly in VS because load the wrong nuget dependencies.
it will build correctly from command line.
Repro steps
A project (.net sdk) who have dependencies from multiple paket group inside the paket.references, and multiple target framework (let's say net461 and netstandard2.0)
Expected behavior
Each target framework (inside VS) will build with the correct dependencies of that target framework
Actual behavior
All dependencies are added together, for all framework (not seperated by framework).
The restore target (inside .NET SdK) will just do a package resolution, so may use wrong packges version and add not expected packages.
Some warning will be like:
warning NU1701: Package 'EventStore.Client 4.1.1-rc1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'. This package may not be fully compatible with your project.
or
warning MSB3277: Found conflicts between different versions of "FSharp.Core" that could not be resolved.
Affected version
from v5.174
Known workarounds
Revert to paket version 5.173.4
Be sure to have aligned the .paket\Paket.Restore.targets and remove the obj dir
additional info
The issue is that all dependencies are specified in Marvel.Projection.fsproj.paket.props (loaded only at design time)
<ItemGroup Condition="($(DesignTimeBuild) == true) AND (('$(TargetFramework)' == 'monoandroid') OR ('$(TargetFramework)' == 'monoandroid2.2') OR ('$(TargetFramework)' == 'monoandroid22') OR ('$(TargetFramework)' == 'monoandroid2.3') OR ('$(TargetFramework)' == 'monoandroid23') OR ('$(TargetFramework)' == 'monoandroid4.0.3') OR ('$(TargetFramework)' == 'monoandroid403') OR ('$(TargetFramework)' == 'monoandroid4.1') OR ('$(TargetFramework)' == 'monoandroid41') OR ('$(TargetFramework)' == 'monoandroid4.2') OR ('$(TargetFramework)' == 'monoandroid42') OR ('$(TargetFramework)' == 'monoandroid4.3') OR ('$(TargetFramework)' == 'monoandroid43') OR ('$(TargetFramework)' == 'monoandroid4.4') OR ('$(TargetFramework)' == 'monoandroid44') OR ('$(TargetFramework)' == 'monoandroid5.0') OR ('$(TargetFramework)' == 'monoandroid50') OR ('$(TargetFramework)' == 'monoandroid5.1') OR ('$(TargetFramework)' == 'monoandroid51') OR ('$(TargetFramework)' == 'monoandroid6.0') OR ('$(TargetFramework)' == 'monoandroid60') OR ('$(TargetFramework)' == 'monoandroid7.0') OR ('$(TargetFramework)' == 'monoandroid70') OR ('$(TargetFramework)' == 'monoandroid7.1') OR ('$(TargetFramework)' == 'monoandroid71') OR ('$(TargetFramework)' == 'monoandroid8.0') OR ('$(TargetFramework)' == 'monoandroid80') OR ('$(TargetFramework)' == 'monoandroid8.1') OR ('$(TargetFramework)' == 'monoandroid81') OR ('$(TargetFramework)' == 'monotouch') OR ('$(TargetFramework)' == 'native') OR ('$(TargetFramework)' == 'native(,arm)') OR ('$(TargetFramework)' == 'native(,Win32)') OR ('$(TargetFramework)' == 'native(,x64)') OR ('$(TargetFramework)' == 'native(Debug,arm)') OR ('$(TargetFramework)' == 'native(Debug,Win32)') OR ('$(TargetFramework)' == 'native(Debug,x64)') OR ('$(TargetFramework)' == 'native(Release,arm)') OR ('$(TargetFramework)' == 'native(Release,Win32)') OR ('$(TargetFramework)' == 'native(Release,x64)') OR ('$(TargetFramework)' == 'net10') OR ('$(TargetFramework)' == 'net11') OR ('$(TargetFramework)' == 'net20') OR ('$(TargetFramework)' == 'net30') OR ('$(TargetFramework)' == 'net35') OR ('$(TargetFramework)' == 'net35-Unity Full v3.5') OR ('$(TargetFramework)' == 'net35-Unity Full v35') OR ('$(TargetFramework)' == 'net35-Unity Micro v3.5') OR ('$(TargetFramework)' == 'net35-Unity Micro v35') OR ('$(TargetFramework)' == 'net35-Unity Subset v3.5') OR ('$(TargetFramework)' == 'net35-Unity Subset v35') OR ('$(TargetFramework)' == 'net35-Unity Web v3.5') OR ('$(TargetFramework)' == 'net35-Unity Web v35') OR ('$(TargetFramework)' == 'net40') OR ('$(TargetFramework)' == 'net403') OR ('$(TargetFramework)' == 'net45') OR ('$(TargetFramework)' == 'net451') OR ('$(TargetFramework)' == 'net452') OR ('$(TargetFramework)' == 'net453') OR ('$(TargetFramework)' == 'net46') OR ('$(TargetFramework)' == 'net461') OR ('$(TargetFramework)' == 'net462') OR ('$(TargetFramework)' == 'net463') OR ('$(TargetFramework)' == 'net47') OR ('$(TargetFramework)' == 'net471') OR ('$(TargetFramework)' == 'net472') OR ('$(TargetFramework)' == 'netcoreapp1.0') OR ('$(TargetFramework)' == 'netcoreapp10') OR ('$(TargetFramework)' == 'netcoreapp1.1') OR ('$(TargetFramework)' == 'netcoreapp11') OR ('$(TargetFramework)' == 'netcoreapp2.0') OR ('$(TargetFramework)' == 'netcoreapp20') OR ('$(TargetFramework)' == 'netcoreapp2.1') OR ('$(TargetFramework)' == 'netcoreapp21') OR ('$(TargetFramework)' == 'netstandard1.0') OR ('$(TargetFramework)' == 'netstandard10') OR ('$(TargetFramework)' == 'netstandard1.1') OR ('$(TargetFramework)' == 'netstandard11') OR ('$(TargetFramework)' == 'netstandard1.2') OR ('$(TargetFramework)' == 'netstandard12') OR ('$(TargetFramework)' == 'netstandard1.3') OR ('$(TargetFramework)' == 'netstandard13') OR ('$(TargetFramework)' == 'netstandard1.4') OR ('$(TargetFramework)' == 'netstandard14') OR ('$(TargetFramework)' == 'netstandard1.5') OR ('$(TargetFramework)' == 'netstandard15') OR ('$(TargetFramework)' == 'netstandard1.6') OR ('$(TargetFramework)' == 'netstandard16') OR ('$(TargetFramework)' == 'netstandard2.0') OR ('$(TargetFramework)' == 'netstandard20') OR ('$(TargetFramework)' == 'portable-net40+sl4') OR ('$(TargetFramework)' == 'portable-net40+sl4+win8+wp7') OR ('$(TargetFramework)' == 'portable-net40+sl4+win8+wp75') OR ('$(TargetFramework)' == 'portable-net40+sl4+win8+wp8') OR ('$(TargetFramework)' == 'portable-net40+sl5') OR ('$(TargetFramework)' == 'portable-net40+sl5+win8') OR ('$(TargetFramework)' == 'portable-net40+sl5+win8+wp8') OR ('$(TargetFramework)' == 'portable-net40+sl5+win8+wp8+wpa81') OR ('$(TargetFramework)' == 'portable-net40+sl5+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net40+win8') OR ('$(TargetFramework)' == 'portable-net40+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net403+sl4') OR ('$(TargetFramework)' == 'portable-net403+sl4+win8') OR ('$(TargetFramework)' == 'portable-net403+sl4+win8+wp7') OR ('$(TargetFramework)' == 'portable-net403+sl4+win8+wp75') OR ('$(TargetFramework)' == 'portable-net403+sl4+win8+wp8') OR ('$(TargetFramework)' == 'portable-net403+sl5') OR ('$(TargetFramework)' == 'portable-net403+sl5+win8') OR ('$(TargetFramework)' == 'portable-net403+sl5+win8+wp8') OR ('$(TargetFramework)' == 'portable-net403+sl5+win8+wp8+wpa81') OR ('$(TargetFramework)' == 'portable-net403+sl5+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net403+win8') OR ('$(TargetFramework)' == 'portable-net403+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net45+sl4') OR ('$(TargetFramework)' == 'portable-net45+sl4+win8') OR ('$(TargetFramework)' == 'portable-net45+sl4+win8+wp7') OR ('$(TargetFramework)' == 'portable-net45+sl4+win8+wp75') OR ('$(TargetFramework)' == 'portable-net45+sl4+win8+wp8') OR ('$(TargetFramework)' == 'portable-net45+sl5') OR ('$(TargetFramework)' == 'portable-net45+sl5+win8') OR ('$(TargetFramework)' == 'portable-net45+sl5+win8+wp8') OR ('$(TargetFramework)' == 'portable-net45+sl5+win8+wp8+wpa81') OR ('$(TargetFramework)' == 'portable-net45+sl5+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net45+win8') OR ('$(TargetFramework)' == 'portable-net45+win8+wp8') OR ('$(TargetFramework)' == 'portable-net45+win8+wp8+wpa81') OR ('$(TargetFramework)' == 'portable-net45+win8+wpa81') OR ('$(TargetFramework)' == 'portable-net45+wp8') OR ('$(TargetFramework)' == 'portable-net451+win81') OR ('$(TargetFramework)' == 'portable-net451+win81+wpa81') OR ('$(TargetFramework)' == 'portable-win81+wp81') OR ('$(TargetFramework)' == 'portable-win81+wp81+wpa81') OR ('$(TargetFramework)' == 'portable-win81+wpa81') OR ('$(TargetFramework)' == 'portable-wp81+wpa81') OR ('$(TargetFramework)' == 'sl3') OR ('$(TargetFramework)' == 'sl4') OR ('$(TargetFramework)' == 'sl5') OR ('$(TargetFramework)' == 'uap10.0') OR ('$(TargetFramework)' == 'uap100') OR ('$(TargetFramework)' == 'uap10.0.15138') OR ('$(TargetFramework)' == 'uap10015138') OR ('$(TargetFramework)' == 'uap10.0.16299') OR ('$(TargetFramework)' == 'uap10016299') OR ('$(TargetFramework)' == 'uap10.0.16300') OR ('$(TargetFramework)' == 'uap10016300') OR ('$(TargetFramework)' == 'uap10.1') OR ('$(TargetFramework)' == 'uap101') OR ('$(TargetFramework)' == 'win10') OR ('$(TargetFramework)' == 'win8') OR ('$(TargetFramework)' == 'win81') OR ('$(TargetFramework)' == 'wp7') OR ('$(TargetFramework)' == 'wp71') OR ('$(TargetFramework)' == 'wp75') OR ('$(TargetFramework)' == 'wp8') OR ('$(TargetFramework)' == 'wp81') OR ('$(TargetFramework)' == 'wpa81') OR ('$(TargetFramework)' == 'xamarinios') OR ('$(TargetFramework)' == 'xamarinmac') OR ('$(TargetFramework)' == 'xamarintvos') OR ('$(TargetFramework)' == 'xamarinwatchos'))">
<PackageReference Include="EventStore.Client">
<Version>4.1.1-rc1</Version>
</PackageReference>
<PackageReference Include="FSharp.Core">
<Version>3.1.2.5</Version>
</PackageReference>
<PackageReference Include="FSharp.Control.AsyncSeq">
<Version>2.0.21</Version>
</PackageReference>
<PackageReference Include="FSharp.Core">
<Version>4.3.4</Version>
</PackageReference>
Description
If a project use multiple paket group for dependencies, the project build incorrectly in VS because load the wrong nuget dependencies. it will build correctly from command line.
Repro steps
A project (.net sdk) who have dependencies from multiple paket group inside the
paket.references
, and multiple target framework (let's saynet461
andnetstandard2.0
)Expected behavior
Each target framework (inside VS) will build with the correct dependencies of that target framework
Actual behavior
All dependencies are added together, for all framework (not seperated by framework). The restore target (inside .NET SdK) will just do a package resolution, so may use wrong packges version and add not expected packages. Some warning will be like:
or
Affected version
from v5.174
Known workarounds
Revert to paket version 5.173.4 Be sure to have aligned the
.paket\Paket.Restore.targets
and remove theobj
diradditional info
The issue is that all dependencies are specified in
Marvel.Projection.fsproj.paket.props
(loaded only at design time)instead of