错误 NU1105 无法找到项目信息 - 项目文件可能无效或缺少恢复所需的目标

Error NU1105 Unable to find project information - The project file may be invalid or missing targets required for restore

突然间,我在解决方案中的 3 个项目中遇到以下错误:

Error NU1105 Unable to find project information for 'C:\code\example\src\libs\example.I18n\example.I18n.csproj'. 
The project file may be invalid or missing targets required for restore.

项目中唯一发生变化的是一些数据库更改,但我过去从未遇到过任何问题。唯一的另一件事是我更新到 Visual Studio 2017 15.5。这会导致问题吗?

我已尝试从源代码管理中删除并重新克隆解决方案,但仍然出现错误。在同事的机器上没问题,肯定是本地的东西。

其中一个 .csproj 文件的示例(如果有帮助的话):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net452</TargetFramework>
    <AssemblyName>Example.I18n</AssemblyName>
    <PackageId>Example.I18n</PackageId>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.1" />
    <PackageReference Include="MessageFormat" Version="1.0.1" />
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
    <Reference Include="System" />
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>

</Project>

对我来说,磁盘上的项目文件的大小写与解决方案文件中的大小写不匹配。

假设我有一个 LibraryA.csprojLibraryB.csproj 的解决方案,其中 LibraryB.csproj 引用了 LibraryA.csproj。解决方案文件中 LibraryA.csproj 的大小写不正确会在构建 LibraryB.csproj 时导致 NU1105:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryA", "LibraryA\Librarya.csproj", "{24DEBB3B-762A-491D-8B83-6D078C0B30C0}"

我在升级到 Visual Studio 2017 的 15.5 版本后开始看到这个问题。我在 15.4.5 版本中没有遇到这个问题。

升级到 Visual Studio 2017 的 15.6 版本后,我也得到了同样的结果。

关闭 VS 并删除 .vs 文件夹为我修复了它。

似乎从解决方案文件中删除了一些项目(不知道为什么)。通过撤消这些解决方案文件更改修复

如果引用的项目未包含在解决方案中,也会出现此错误消息。我今天遇到了这个问题,我找到了修复 here.

我在重复引用项目时遇到此错误。

<ProjectReference Include="..\ProjectA.csproj" />
<ProjectReference Include="..\ProjectA.csproj" />

删除重复引用解决了错误。

对我有用的是

  1. 删除违规项目
  2. 构建解决方案
  3. 重新添加项目。

我有下一个项目结构(.Net Core 项目):

../classLib
../../../webProject1
../../../webProject2
../../myWebProjects.sln

webProject1webProject2 引用 classLib 作为项目本身(而不是 .dll)。当我在 VS 2019 中打开我的解决方案并尝试构建时,我遇到了相同的 error NU1105: Unable to find project information for '../classLib.csproj'. 错误。

在构建依赖的项目之前,您需要恢复那里的依赖。我做了什么,只需添加 接下来 Target 到我的 webProject1.csprojwebProject2.csproj 文件。

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="dotnet restore" />
</Target>

我最近在 Linux 上使用 JetBrains Rider 时遇到错误 NU1105。所以这涉及到Mono和它自带的MSBuild版本。

事实证明,这是由于我的解决方案文件位于一个目录中,该目录是另一个目录的符号 link。我相信 MSBuild 正在取消引用 linked 目录,而是引用源目录。这使得一些引用路径完全不同,即使它们是完全相同的文件、大小写和其他所有内容。从原始位置打开解决方案现在对我来说非常有效。

重新加载导致问题的项目,这将解决问题,

如下所述link:

https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1105

我收到此错误错误 NU1105:无法找到 'C:\folder2\project1.csproj' 的项目信息。 但是我作为解决方案的一部分的 project1 位于 C:\folder1\project1.csproj(它也在 c:\folder2\project1.csproj 中,但不是解决方案的一部分,所以它很混乱) 一旦我将引用更改为它工作的项目的正确位置。

我通过 运行 干净的解决方案选项更正了这个错误。 右键单击解决方案资源管理器中的解决方案并选择干净的解决方案。

我遇到了这个问题,我只是按照 VS 中的错误消息建议进行操作:
恢复解决方案。

所以我打开命令行或包管理器控制台,chdir 进入包含解决方案 (.sln) 文件的目录并刚刚发布

C:> dotnet restore .\mySolution.sln

问题已解决。

这太疯狂了,我尝试了所有这些: 更新VS。手动删除所有 bin 文件夹,运行 dotnet restore,clean rebuild 无效

解决方案:最后我卸载所有项目并开始将它们重新加载到解决方案中,按照它们显示依赖项错误的顺序一个一个地加载。然后最后一个只是级联修复一切。不知道哪里出了问题

在花了 3 个小时尝试了很多解决方案后,对我有用的是我不得不撤消我的根解决方案 sln 文件...一些项目引用被删除了..不知道如何。

当我的文件名称超过 OS 的最大路径限制时,我就会遇到这种情况。检查你的名字 ;)

就我而言,我做到了并且对我有用

  1. 转到Tools/CommandLine/Developer 命令提示符或开发人员 Powershell
  2. 键入此命令并输入“dotnet restore”。
  3. 构建您的解决方案

就这些了

打开 powershell 和 运行 恢复命令解决了我的问题。

dotnet restore Sample.sln