我研究了这个问题,但没有一个解决办法有效。我安装了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.
错误信息是完全正确的。我试了所有的花招,没有一个奏效。项目(简单的MVC Web应用程序测试)从Windows 8.1 VS 2015社区转移到我在Windows 10上的新测试箱。所有VS 2015的最新更新都适用。
我甚至无法安装任何更新版本的编译器包。
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop
我最终只是将Microsoft.Net.Compilers.1.0.0从旧项目复制到新项目中,它工作了。
然后我可以开始将其他包更新到新版本。
在我看来是nuget项目升级过程的bug。
注意:最初的项目是在VS 2015中创建的,没有任何遗留的nuget方法。
为了在这里展开一些答案,是的,你可以从你的.csproj文件中删除以下块:
<目标
这解决了问题,但在我的情况下,我注意到我有额外的引用。net。编译器和。codedom。不同版本的供应商:
<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\
当我的包裹。配置仅参考以下内容:
<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"
从.csproj文件中删除1.0.0项解决了这个问题。
注释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>-->
更新包配置文件中的最新版本
<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')" />