我研究了这个问题,但没有一个解决办法有效。我安装了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.


当前回答

注释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=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>-->

更新包配置文件中的最新版本

  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />

重建如果一切正常,不需要继续,否则 右键单击项目,点击“卸载项目” 再次右键单击该项目并编辑.csproj文件

验证Codedom的路径,它在之前的路径中没有net45,手动添加,保存,加载,重建。它应该会起作用。

<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')" />

其他回答

不同的用户名是常见的原因,Nuget下载一切到:“C:\Users\USER_NAME\source\repos”,如果你之前在不同的用户名上设置了项目。csproj文件可能仍然包含旧的用户名,只需打开它,并做一个搜索替换“C:\Users\ old_user_name \source\repos”到“C:\Users\NEW_USER_NAME\source\repos”。

我也遇到了同样的问题,原来我引用的一个项目在解决方案目录之外(因此没有共享相同的“/packages”文件夹)。对我来说有效的解决方案是打开参考项目的解决方案并在那里构建它。一旦项目建成,错误就消失了。

对我来说,问题是当我将解决方案复制到一个新文件夹并打开它时,它缺少如下所示的Nuget文件夹。我复制了这个文件夹,一切正常。注意:这个文件夹在我们的源代码控制中,但不在这个解决方案项目中,它在上面一个目录中。

我得到了这个错误的修复,实际上我有一个不同版本的MSTest.TestAdapter(1.3.2)在我的包文件夹和在.csproj文件引用指向MSTest.TestAdapter(1.1.0)。我已经将所有MSTest.TestAdapter(1.1.0)替换为MSTest.TestAdapter(1.3.2),这解决了我的问题。

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

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

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