If you're using VS2015 Update 1 or later, you can convert your project to use project.json
to fix this.
In short:
- Run
Uninstall-Package <package name> -Force -RemoveDependencies
for all your packages. You may wanna copy-paste your packages.config
in notepad before you do this.
- Delete
packages.config
from the project, save the project, unload
- Edit the project file and remove:
- Any referenced
.props
files at the top related to nuget
- Any
<Reference>
elements that reference a package
- The
.targets
files at the bottom that reference nuget - usually starts with: <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
- If your packages contain Roslyn analyzers, make sure to remove them too.
- Save the file and relod the project
Add project.json
with:
{
"dependencies": {
},
"frameworks": {
".NETFramework,Version=v4.6.1": {}
},
"runtimes": {
"win": {}
}
}
Finally add your packages again, either by hand under dependencies
or using Install-Package
or with the nuget UI in VS.
I've also had to remove any Microsoft.Bcl.*
packages from my projects because they explicitly look for a packages.config
file.
EDIT: this (removing the Microsoft.Bcl.*
packages will give you a compile-time error, even though the project will build fine, because the .targets
file Microsoft.Bcl.Build
adds will still look for packages.config
.
To suppress this, edit your project file and add:
<SkipValidatePackageReferences>true</SkipValidatePackageReferences>
This needs to go to the first <PropertyGroup>
that doesn't have a Condition
attribute set. If there isn't one, just add another at the top, like:
<PropertyGroup>
<SkipValidatePackageReferences>true</SkipValidatePackageReferences>
</PropertyGroup>