Visual Studio 生成错误,此项目引用NuGet

hzbexzde  于 2023-06-24  发布在  其他
关注(0)|答案(9)|浏览(271)

当我尝试构建解决方案时,我收到以下错误消息:
严重性代码描述项目文件行抑制状态错误此项目引用此计算机上缺少的NuGet包。使用NuGet Package Restore下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props。C:\Users\Bryan\Documents\Visual Studio 2015\Projects\MusicKarma\MusicKarma.csproj 268
当我查看我的软件包文件夹时,我可以找到名为Microsoft.Net.Compilers.props的文件
我试过使用Nuget Restore,但它一直说我有所有的包。
当我把这个项目从TFS到我的一台计算机时,就会发生这种情况。

vjhs03f7

vjhs03f71#

快速解决方案,对我和其他人来说都很有魅力:
如果您使用的是VS 2015+,只需从项目的.csproj文件中删除以下行:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

在VS 2015+解决方案资源管理器中:
1.右键单击项目名称->卸载项目
1.右键单击项目名称-> Edit .csproj
1.从文件中删除上面指定的行并保存
1.右键单击项目名称->重新加载项目

cidc1ykv

cidc1ykv2#

当我在文件系统中创建文件夹(不在我的解决方案中)并移动一些项目时,这个问题出现了。
结果发现包路径是相对于csproj文件的。所以我不得不改变我引用的“HintPath”:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
    <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
    <Private>True</Private>
</Reference>

收件人:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
    <HintPath>..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
    <Private>True</Private>
</Reference>

注意'HintPath'中的双“..\”。
我还必须改变我的错误条件,例如我必须改变:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" />

收件人:

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" />

同样,注意双“..”。

kxkpmulp

kxkpmulp3#

首先,我要检查MusicKarma项目的packages.config文件中是否有Microsoft.Net.Compilers。如果没有,那么你可以从MusicKarma.csproj中删除与NuGet包有关的所有内容。
如果您使用的是Microsoft.Net.CompilersNuGet包,那么我的猜测是路径不正确。查看错误消息中的目录名,我猜MusicKarma解决方案文件(.sln)与MusicKarma.csproj位于同一目录中。如果是这样,那么packages目录可能是错误的,因为默认情况下,packages目录应该在solution目录中。所以我假设你的packages目录是:

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\MusicKarma\packages

当您的MusicKarma.csproj文件在以下位置查找 prop 文件时:

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\packages\Microsoft.Net.Compilers.1.1.1\build

因此,如果是这种情况,那么您可以通过编辑MusicKarma.csproj文件中的路径或重新安装NuGet包来解决问题。

c3frrgcw

c3frrgcw4#

我也有这个错误,我把这部分代码从.csproj文件:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
      <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
      </PropertyGroup>
      <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
    </Target>

删除这部分代码。如果你用记事本打开文件.csproj,删除Targuet代码,保存,然后正常打开

bakd9h0s

bakd9h0s5#

为什么你需要处理packages.config或.csproj文件?
错误明确地说:使用NuGet Package Restore下载它们。
按照以下说明使用:https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore-troubleshooting
Visual Studio用户的快速解决方案
1.选择“工具”>“NuGet包管理器”>“包管理器设置”菜单命令。
2.在“包还原”下设置这两个选项。
3.选择OK。
4.重新构建您的项目。

8ulbf1ek

8ulbf1ek6#

这是一个有点旧的帖子,但我最近遇到了这个问题。我所做的就是从packages文件夹中删除所有nuget包并恢复它。我成功地构建了解决方案。希望对某人有帮助。

xam8gpfp

xam8gpfp7#

从.csproj文件中删除这部分代码,并移动到项目中的短绝对路径。这意味着,最好位于短的绝对路径上。

C:\Users\name\OneDrive\Desktop\spath1\test\test5....\mvc\Ecommerce

而不是上面的,你可以像下面这样移动项目,

C:\Users\name\OneDrive\Desktop\mvc\Ecommerce
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
blmhpbnm

blmhpbnm8#

在我的情况下,我删除了以前的项目,并创建了一个新的项目与不同的名称,当我正在建设的项目,它显示了同样的错误。
我刚刚编辑了项目的csproj文件中的项目名称&它工作了…!

pgvzfuti

pgvzfuti9#

我不太确定,我的项目发生了什么变化,或者这种情况发生是因为vs 2015或vs 2017或vs 2019之间的dll版本崩溃。
我已经从TFS克隆了我的项目,并且发生了这种情况。
这就是我所做的:

  • 将Microsoft.Net.编译器从v.1更新到v.1.1
  • 签入源代码管理Exproler上挂起的更改
  • 撤消对文件的更改:.csproj、packages.config和web.config
  • 关闭VS2015 -清洁解决方案-重建解决方案

相关问题