Scaffolding error : deps.json doesn't exist

2019-04-30 08:47发布

问题:

I'm currently using VS2017 for developing .NET Core MVC Web

When I tried to create a new Controller from Add > Controller, I got this error

Error

There was an error running the code generator: "The specified deps.json
[C:\Users\xxx\Documents\Visual Studio 2017\Projects\bin\MCD\Debug\netcoreapp1.1
\[project name].deps.json] does not exist"

When I explored the solution folder, I found that there are two folder in the bin directory, Debug and MCD.

bin
|
- Debug
 - netcoreapp1.1
  - ...
  - [project name].deps.json
|
- MCD <- this is where the scaffolding looks for deps.json

I noticed that I also got the same problem when debugging .NET Console app (which I created from dotnet new console cli command) from Visual Studio Code. The same problem faced in .deps.json could not be found

Are there any .NET Core configs that I missed? Or this is a bug in .NET Core? I remember I didn't configure anything prior from installing my .NET Core in VS2017

回答1:

Found the answer here : https://github.com/dotnet/coreclr/issues/113

Apparently, this is some kind of bug that appeared on HP computers. I'll quote from the GitHub issue :

they have an environment variable called Platform, set to MCD which is why you are seeing this error.

This cause .NET Core to look for the file at MCD folder of your bin, instead of your normal Debug file. All you have to do is delete the variable or set it to nothing



回答2:

The file VS 2017 is looking for in

[C:\Users\xxx\Documents\Visual Studio 2017\Projects\bin\MCD\Debug\netcoreapp1.1 [project name].deps.json]

seems to be found at

[C:\Users\xxx\Documents\Visual Studio 2017\Projects\bin\Debug\netcoreapp1.1 [project name].deps.json]

So I just copied the content from the second folder to the first and it worked. No need to change environment variables



回答3:

I did have the same problem under VS2017. My solution was to delete the variable Platform in Environment Variables. Also your must reboot your VS2017.



回答4:

Also you can change the launch.json by adding the MCD folder to the string of the "program" argument