NuGet Packages are missing
Visual StudioNugetVisual Studio-2015Visual Studio Problem Overview
I searched this problem but none of the solutions worked. I have Visual Studio Professional 2015 installed and I am using TFS. My NuGet version is 3.1.6. This problem is happening only in my C# Web API/MVC project.
I am getting the below error:
> This project references NuGet package(s) that are missing on this > computer. Use NuGet Package Restore to download them. For more > information, see http://go.microsoft.com/fwlink/?LinkID=322105. The > missing file is > ..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props
-
I do not have .nuget folder in my solutions.
-
I have a packages folder in the solution and when I delete it, it seems like NuGet does rebuild the dependencies but the project still has the above error.
-
I tried removing the project from TFS and it didn't fix it.
-
Along with the above error, all the references in the project have yellow warning signs and say they are missing.
-
When I checked the NuGet Package Manager for the project, everything that is "missing" has a green tick next to it, including Microsoft.Net.Compilers.
-
I tried adding a new Web API/MVC project and it faced a similar problem where most references such as Owin were "missing" with the yellow warning sign.
Visual Studio Solutions
Solution 1 - Visual Studio
I solved my issue by removing this code from .csproj
file:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
Solution 2 - Visual Studio
I had the same error (missing exactly the same package) today. I also created a MVC + Web API project.
It happened because I moved the app files (including the .csproj) file to another location. I manually updated the .sln file but all packages dependencies are now (Visual Studio 2015) stored in .csproj file.
Editing the .csproj file and correcting the relative path to the solution folder (which contains the packages folder) solved the problem for me.
Solution 3 - Visual Studio
BEWARE - this updates packages for the entire solution not just the project.
If you have one more missing nuget package that giving your error while building your solution use following command using Nuget Command Console from Tools > Nuget Package Manager > Package Manager Console. It will reinstall your all current packages.
Update-Package –reinstall
Update:
You can pass specific project name as a parameter.
Update-Package –reinstall -ProjectName SampleApp
Solution 4 - Visual Studio
I had this exact frustrating message. What finally worked for me was deleting all files and folders inside /packages and letting VS re-fetch everything the next build.
Solution 5 - Visual Studio
this way solved my error : To open .csproj file for update in Visual Studio 2015+ Solution Explorer:
Right-click project name -> Unload Project
Right-click project name -> Edit .csproj
Remove the following lines :
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
<Error Condition="!Exists('packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
Right-click project name -> Reload Project
Finally Build your solution.
Solution 6 - Visual Studio
Tiberiu is correct. I had to edit my .csproj file as the files were moved and caused this issue
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
I changed at top of the file and at the bottom
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
Solution 7 - Visual Studio
I solved this issue by removing the following code from .csproj file
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />
Solution 8 - Visual Studio
A combination of the 2 answers worked for me. First I modified the .csproj file to remove the reference to 1.0.0 version
< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >
----Error---
< /Target>
and then did
Update-Package -Reinstall
from the
Solution 9 - Visual Studio
I solved the same issue with the following steps
-
Removed package
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net46" />
from package.config file. -
Edit the .csproj project file and removed the below settings.
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" /> </Target>
-
Go to package manager console and run the command
Update-Package –reinstall
Point # 2 and 3 were given by other users and I appreciate those users. Point # 1, removing the Microsoft.CodeDom.Providers.DotNetCompilerPlatform
from package.config file is more important. Also, after running the command mentioned in point #3, the issue resolved. All unwanted packages removed and required package reference updated.
Hope this helps someone.
Solution 10 - Visual Studio
For me, the problem was that when I copied the solution to a new folder and opened it, it was missing the Nuget folder as shown below. I copied this folder over and everything worked. Note: This same folder was in our source control but not in this solutions project, it was up one directory.
Solution 11 - Visual Studio
To expand on a few of the answers here, yes you could remove the following block from your .csproj file:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
and this fixes the issue, however in my case, I noticed that I had additional references to the .NET.Compilers and .CodeDom.Providers with different versions:
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\
When my packages.config only referenced the following:
<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"
Removing the 1.0.0 items from the .csproj file fixed the issue.
Solution 12 - Visual Studio
Just enable NuGet Package Restore. Right click your solution > choose 'Enable NuGet Package Restore'.
This will create the .nuget folder with NuGet.Config file and fixed my problem.
Solution 13 - Visual Studio
I am using VS2012 and facing the same error. I removed the following Target tag from the .csproj file and it started compiling without any error.
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-- Error messages within Target Tag
</Target>
Solution 14 - Visual Studio
For anyone who stumbles here with the issue I had (some but not all packages being restored on a build server), the final piece of the puzzle for me was adding a NuGet.config in the root of my solution, sibling to the .SLN file as David Ebbo explained here: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html.
From Ebbo's blog post, the file contents for me are simply
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>
UPDATE:
The NuGet API URL has changed for v3 (current as of Sept 2016). From https://www.nuget.org/
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
Solution 15 - Visual Studio
The error message is completely correct. I tried all the tricks and none worked. The project (simple MVC Web App test) moved from Windows 8.1 VS 2015 Community to my new test box on Windows 10. All the latest updates to VS 2015 applied. I could not even install any newer version of the compilers package.
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop
I finally just copied Microsoft.Net.Compilers.1.0.0 from the old project into the new one and it worked. I could then start to update other packages to newer version. Looks like a nuget project upgrade process bug to me.
NOTE: The original project was created in VS 2015 and does not have any legacy nuget methodologies.
Solution 16 - Visual Studio
Solution that works in my case - Visual Studio 2015 Enterprice, project .NET 4.6.1
- Upgrade to Update 3
- Install Web developer tools
Solution 17 - Visual Studio
For me, the packages were there under the correct path, but the build folders inside the package folder were not. I simply removed all the packages that it said were missing and rebuilt the solution and it successfully created the build folders and the .props files. So the error messages were correct in informing me that something was a miss.
Solution 18 - Visual Studio
I had this issue as a failed build in Azure, when deployed from Git.
Turns out my .gitignore was excluding the build
folder from ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
.
Once the build
folder was (force) committed to Git, the issue was solved.
Solution 19 - Visual Studio
For me my gitignore file was ignoring my packages folder. The following gitignore line was causing the issue -
**/packages/*
Removed and it restored my packages folder. Hope this helps someone else.
Solution 20 - Visual Studio
I couldn't find any solutions to this so I added a copy of the nuget.exe and a powershell script to the root directory of the solution called prebuild.ps1 with the following content.
$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args
I called this powershell script in my build in the Pre-Build script path
Solution 21 - Visual Studio
Mine worked when I copied packages folder along with solution file and project folder. I just did not copy packages folder from previous place.
Solution 22 - Visual Studio
You can also use the suggested error message as a hint. Here's how, find the Manage Packages for Solution, and click on the resolve missing nuget package.
That's it
Solution 23 - Visual Studio
Comment the Compiler Option in WebConfig
:
<!--<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>-->
> Update the Latest Version of Packages in Package Config File
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />
Rebuild if all ok, no need to proceed, else Right-click the project, click 'unload project' Right-click the project again and edit .csproj file
Validate the path of Codedom, it was not having net45 in previous paths, add that manually, save, load, rebuild. It should work.
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
Solution 24 - Visual Studio
As many suggested removing the <Target>
tag may make it compile-able. Yet, beware of the fact that it has a side effect when you do it for test projects.
I got error related to MSTest.TestAdapter
nuget package while compiling. Resolved that issue by removing <Target>
tag. Though it made build successful, test methods became non discover-able. Test explorer won't list down the test methods in that project and Run Test or Debug Test won't work as well.
I encountered this while using Visual Studio 2017
and .Net framework 4.7
, it can very well happen in other versions
Solution 25 - Visual Studio
The issue for me was that NuGet couldn't automatically get/update the packages because the full file path would be too large. Fixed by moving my solution to a folder in my Documents instead of a deeply nested folder.
Then can right-click on solution and select "Restore NuGet Packages" (which probably isn't necessary if you just build it and let it do it for you), and then select "Manage NuGet Packages for Solution" to get all the packages updated to the latest version.
This was for a solution of a sample ASP MVC application downloaded from Microsoft's web site.
Solution 26 - Visual Studio
For DevOps/build engineers, you can probably fix this running nuget restore
against the affected SLN, or project if you lack a SLN. I have to do this for our CI/CD builds for all our UWP projects.
- Make sure nuget is installed on the build slave either in Visual Studio or standalone. If it's the latter, make sure it's in PATH and skip step 2.
- Either open the VS Dev CMD console, or load it via an already open one, which you can do with the instructions below:
VS2015call "%VS140COMNTOOLS%VsDevCmd.bat"
or
VS2017call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
call nuget restore MyStuff.SLN
orcall nuget restore MyStuff.csproj
if there's no SLN.
Solution 27 - Visual Studio
Not sure if this will help anyone, but I had this issue come up when I deleted the source code from my local machine without having ever saved the solution file to TFS. (During initial development, I was right-clicking and checking in the project in Solution Explorer, but forgot to ever check in the solution itself.) When I needed to work on this again, all I had in TFS was the .csproj file, no .sln file. So in VS I did a File --> Source Control --> Advanced -- Open from Server and opened the .csproj file. From there I did a Save All and it asked me where I wanted to save the .sln file. I was saving this .sln file to the project directory with the other folders (App_Data, App_Start, etc.), not the top level directory. I finally figured out that I need to save the .sln file up a directory from the project folder so it's on the same level as the project folder. All my paths resolved and I was able to build it again.
Solution 28 - Visual Studio
I got a fix around this error, actually I was having a different version of MSTest.TestAdapter(1.3.2) in my packages folder and in .csproj file references were pointing to MSTest.TestAdapter(1.1.0). I have replaced all the MSTest.TestAdapter(1.1.0) to MSTest.TestAdapter(1.3.2), and this resolved my issue.
Solution 29 - Visual Studio
I realize this question is old, however I ran into this same situation today and wanted to throw in my 2 cents for anyone recent finding this issue. An ASP MVC project I had manually moved to a subfolder in my solution and then removed and readded to the solution, using Visual Studio 2017, was giving the error mentioned. Moving the "lib" and "packages" folders to the root of the same subfolder as the MVC project fixed my issue.
Solution 30 - Visual Studio
I was having the same issue, it turns out one of the projects I was referencing was outside the solution directory (and therefore didn't share the same '/packages' folder). The solution that worked for me was to open the reference project's solution and build it there. Once that project built, the errors went away.
Solution 31 - Visual Studio
The folder in my solution was named ".NET Project". By renaming it to "NET Project" everything worked fine. So the dot at the beginning was a bad idea.
Solution 32 - Visual Studio
In my case there was missing <RestorePackages>true</RestorePackages>
in *.csproj file. It was not necessary to delete snippets of code I see in previous answers.
Solution 33 - Visual Studio
A different user name is the common cause for this, Nuget downloads everything into: "C:\Users\USER_NAME\source\repos"
and if you had the project previously setup on a different user name the .csproj file may still contain that old user name there, simply open it and do a search replace for "C:\Users\_OLD_USER_NAME\source\repos"
to "C:\Users\NEW_USER_NAME\source\repos"
.
Solution 34 - Visual Studio
There seem to be multiple causes for this.
For mine, it was that the .csproj file contained references to two different versions of Microsoft.Bcl.Build.targets:
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
</Target>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
</Target>
I removed the old reference, and it solved the problem.
Solution 35 - Visual Studio
You also get this error if you use package.config
together with this build command
MSBuild.exe /t:Restore MySln.sln
In this case either switch to nuget restore
command or use PackageReference
.
Solution 36 - Visual Studio
0
Interesting thing I came to know, about nuget references in Visual studio For nuget references, we can add As through reference or by package.config file.
In Visual Studio 2017 - the alphabetic order or nuget reference is taken care by VS automatically.
But In Visual Studio 2019. if you nuget references are not in alphabatic order than VS doen't loading the file in Reference folder.
So in order to try to fix. --Remove all the All references from .csproj/vbproj or package.config.
-- save in notepad. Try to add those through Nuget Package Manager.
-- Try with 1 first time. and once installed.
-- Right click on Solutions -> Restore all nuget packages.
-- You will see now it loads one nuget reference.
-- Now do this one by one.
-- if you 100% sure that your order of references are in alphabetic order. Just paste them all in .csproj/vbproj or package.config.
-- Restore all nuget on solutions.
You will see all the symbols will be loaded. -- one more thing Refresh you Reference folder by a top icon in solutions explorer.
Happy referencing.
Solution 37 - Visual Studio
Comment out the following code from .csproj
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Costura.Fody.2.0.1\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.2.0.1\build\Costura.Fody.targets'))" />
<Error Condition="!Exists('..\packages\Fody.3.1.3\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.3.1.3\build\Fody.targets'))" />