【发布时间】:2018-02-12 19:48:51
【问题描述】:
我正在尝试使用 Nuget 包管理器在 VS 2017 中安装/恢复 Microsoft.Net.Compilers.1.0.0。在输出中,它显示还原已完成。但是,当我检查 packages 文件夹时,我看不到 Microsoft.Net.Compilers 文件夹。
因为那我得到错误
严重性代码描述项目文件行抑制状态 错误此项目引用了缺少的 NuGet 包 这台电脑。使用 NuGet 包还原下载它们。更多 信息,请参阅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
在csproj文件顶部有一行
<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 项目时,我得到了missing dependencies issues。所以根据建议我编辑了 .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
所以看起来当启用包引用时,nuget 会将包安装在C:\Users\{username}\.nuget\packages 文件夹中
这意味着我需要用正确的相对路径更新 csproj 文件。
packages 文件夹的相对路径是什么?
【问题讨论】:
-
因为我在使用这个 nuget 时遇到了问题,所以我刚刚从项目文件中删除了它,现在它可以编译了。
标签: visual-studio-2017 nuget nuget-package .net-standard nuget-package-restore