在csproj文件中,顶部有一行。
严重程度代码描述项目文件行抑制状态 错误此项目引用了在此计算机上缺失的NuGet包。使用NuGet Package Restore下载它们。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是....\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props。XXXXX \ Src \ Api \ Api.csproj 296
<Import Project="..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
背景
这个问题出现在目标框架为4.6.2的Web API项目中。我还有一个NET Standard 1.4
库,想与不同类型的.NET应用程序共享。当我将NET Standard Library
的引用添加到Web API项目中时,我遇到了缺少依赖项问题。所以根据建议,我编辑了.csproj文件并添加了
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
这解决了缺少依赖项的问题。
然后我删除了package.config
文件,从packages
文件夹中删除了所有包,并重新添加了所有包(除了Microsoft.Net.Compilers)。现在,包引用在.csproj文件中。
这里有SO帖子,但在我的情况下,Microsoft.Net.Compilers
甚至没有被还原到packages
文件夹中。VS 2017显示还原完成,但我不知道它实际上将文件复制到哪里。(除非文件夹名称与Microsoft.Net.Compilers不同)
我的原始package.config文件有这一行:
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net462" developmentDependency="true" />
现在在.csproj文件中我有:
<PackageReference Include="Microsoft.Net.Compilers">
<Version>1.0.0</Version>
</PackageReference>
更新1
看起来当启用packagereference时,NuGet会将包安装在C:\ Users \ {username} \ .nuget \ packages
文件夹中。
这意味着我需要使用正确的相对路径更新csproj文件。
这里的packages文件夹的相对路径是什么?