37
votes

After adding WindowsRuntime to a WinForms-project, building the project fails with Error "Must use PackageReference". The build log is more precise:

C:[...]\Visual Studio 2017\Projects\Projectname\packages\Microsoft.Windows.SDK.Contracts.10.0.18362.2005\build\Microsoft.Windows.SDK.Contracts.targets(4,5): error : Must use PackageReference

Here's what I did:

Install-Package Microsoft.Windows.SDK.Contracts

with references to:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\System.Runtime.WindowsRuntime.dll,
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Threading.Tasks.dll
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.IO.dll
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.InteropServices.WindowsRuntime.dll.

Is it maybe a thing with the .NET version? In the project's packages.config there is 4.6 while the project targets 4.5.

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Windows.SDK.Contracts" version="10.0.18362.2005" targetFramework="net45"/>
<package id="System.Runtime.WindowsRuntime" version="4.6.0" targetFramework="net45" />
<package id="System.Runtime.WindowsRuntime.UI.Xaml" version="4.6.0" targetFramework="net45" />
</packages>

There are no compile errors... only this strange "PackageReference" error.

4
Do you mean you are trying to use net .core references in a System.Windows.Forms project? - Cleptus
Have you set, in Tools -> Options -> Nuget Package Manager -> General -> Package Management to use PackageReference as Package management format? The 4.6 version is related to the System.Runtime.WindowsRuntime dependency, not the .Net Framework. - Jimi
@Jimi, the error occurs when Default package management format is set to Packages.config as well as if it is set to PackageReference. I cleared the NuGet cache and the solution after changing this value. When I installed Microsoft.Windows.SDK.Contracts, the value was Packages.config... did I have to change the value before running Install-Package? - Joe
Uninstall any NuGet packages related to Microsoft.Windows.SDK.Contracts, set PackageReference as default format, re-install all packages using NuGet Package Manager. - Jimi
@Jimi thank you so much! Your advise worked. - Joe

4 Answers

91
votes

VS2017/VS2019 -> Solution Explorer -> right-click References -> "Migrate packages.config to PackageReference"

VS2019 -> Solution Explorer -> right-click packages.config -> "Migrate packages.config to PackageReference"

6
votes

Solution that worked for me was to:

  1. Run a Clean on the project in question
  2. Close Visual Studio
  3. Navigate to the project folder on disk and delete the obj folder
  4. Reopen Visual Studio and Build
0
votes

Could be becuse of nugetpackage, for WPF use WPF one.

0
votes

Go to your .csproj and remove the references to the package. On my case they were at the end of the XML file