我研究了这个问题,但没有一个解决办法有效。我安装了Visual Studio Professional 2015,我正在使用TFS。我的NuGet版本是3.1.6。这个问题只发生在我的c# Web API/MVC项目中。

我得到以下错误:

这个项目引用了NuGet包(s),这是缺失的 电脑。使用NuGet包还原来下载它们。更多的 信息,见http://go.microsoft.com/fwlink/?LinkID=322105。的 丢失的文件是 . . \ \ Microsoft.Net.Compilers.1.0.0 \制造\ 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.


当前回答

遇到这个问题

按以下步骤求解

清除packages文件夹中的内容(先备份) 使用“更新-包-重新安装”从包管理控制台的NuGet中重新获取和重新安装包(Tools -> NuGet包管理器->包管理控制台) 从.csproj文件中删除冗余路径。注意:NuGet会添加新的路径到csproj文件,但它不会删除旧的路径… (有一些机会csproj文件有多个路径为同一文件)

为什么我们需要“Microsoft.Net.Compilers.props”? 它将提供“\roslyn”文件夹。如果没有它,你可能仍然可以编译程序,但不能使用@{html.RenderPartial…}

其他回答

我的问题是NuGet不能自动获取/更新包,因为完整的文件路径太大了。通过将我的解决方案移动到我的文档中的一个文件夹而不是一个深度嵌套的文件夹来修复。

然后可以右键单击解决方案并选择“恢复NuGet包”(如果您只是构建它并让它为您完成它,这可能是不必要的),然后选择“管理解决方案的NuGet包”以将所有包更新到最新版本。

这是从微软网站上下载的一个ASP MVC应用程序示例的解决方案。

对于DevOps/构建工程师,您可能可以针对受影响的SLN或缺乏SLN的项目修复此运行nuget恢复。我必须为我们所有UWP项目的CI/CD构建这样做。

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: VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat" or VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" call nuget restore MyStuff.SLN or call nuget restore MyStuff.csproj if there's no SLN.

正如许多人建议的那样,删除<Target>标记可以使其可编译。然而,当您为测试项目这样做时,要注意它有一个副作用。

我得到了与MSTest相关的错误。TestAdapter nuget包在编译时。通过移除<Target>标签解决了这个问题。尽管它使构建成功,但测试方法变得不可发现。测试资源管理器不会列出该项目中的测试方法,运行测试或调试测试也不能很好地工作。

我在使用Visual Studio 2017和.Net框架4.7时遇到了这种情况,在其他版本中也很可能发生这种情况

如果使用package,也会得到这个错误。与此构建命令一起配置

MSBuild.exe /t:Restore MySln.sln

在这种情况下,要么切换到nuget恢复命令,要么使用PackageReference。

您还可以使用建议的错误消息作为提示。下面是如何找到解决方案的管理包,并单击解决丢失的nuget包。

就是这样