VS2017项目加载失败,无法加载项目细节。

82

我编辑了project.csproj文件,重新打开解决方案时出现了错误: 项目xxx的详细信息无法加载,因此操作失败。

我尝试删除obj和bin文件夹,通过工具 > 选项清除nuget缓存。 但是错误仍然存在。

备注:错误不是每次都会发生,我只重新启动了项目三次。第一次和第二次是正确的,但第三次出现了错误。

vs2017: Microsoft Visual Studio Community 2017 版本15.0.26228.9 D15RTWSVC Microsoft .NET Framework 版本4.6.01586

包管理器控制台宿主版本4.0.0.2323

11个回答

124

我曾多次遇到这个问题,但只有一次没有用关闭再重新启动Visual Studio 2017解决。因此,如果您还没有尝试过重新启动VS,请尝试一下,如果这样做失败了,请寻找更严重的解决方案。


70

我刚遇到了同样的问题。据说Microsoft已经意识到这个问题并在下一个版本的预览版中修复了它,有关详细信息请参见以下评论:

https://developercommunity.visualstudio.com/comments/31393/view.html

与此同时,解决方法是打开VS2017(不加载你的解决方案),打开“程序包管理器控制台”,等待它完全加载,然后再打开你的解决方案。


2
从版本15.0.26906.1升级到15.0.26923.0后出现了这个错误。 - screig
5
我有15.3.5版本,但仍然看到这个问题。发生了什么?Nuget表示15.3支持SEMVER 2.0 https://blog.nuget.org/20170815/Whats-nu-in-NuGet-with-VS2017-15-3.html#support-for-semantic-versioning-200 - bradgonesurfing
4
我现在在15.4.2版本中遇到了这个问题。 - Finster
4
在我们团队的一位成员更新到15.5.6版本后,他开始收到这个错误信息。他的项目路径中有一个撇号。他将解决方案移动到没有非字母字符的目录中,问题得到了解决。奇怪的是,我路径中有一个下划线,但我的构建/恢复工作正常。我想现在可能有些字符在完整路径中是不合法的。 - Brett Mathe
2
我将在15.7.4中获得它。 - Anthony
显示剩余8条评论

16

我在使用VS 2017和最新的.NET SDK更新时遇到了同样的问题。但是我找到了一种快速且简单的解决方法。

当您的项目打开时,打开您的“包管理器控制台”,然后运行'dotnet restore'命令。

在包管理器控制台窗口中,确保顶部的“Package Source”下拉菜单设置为“All”,并将“Default Project”设置为您的项目名称。


即使在VS 2019中,同样的错误和解决方法也需要多次使用。我经常为大型项目做这个操作。 - Maximiliano Rios

5

仅仅重新启动 Visual Studio 2017 就足以解决这个问题。


6
你的问题是如何与这个回答不同? - Pika Supports Ukraine

3

与@Keith类似,这是我2017年项目文件中SemVer的结果。

.csproj文件中,我正在使用<PackageReference... Version="1.1.*" />。当解决方案首次加载时,程序包管理器会输出以下内容:

还原NuGet程序包时发生错误:无法加载ProjectWebApi项目的详细信息。

VS 2017 15.2 (26430.14)中,它似乎并没有造成任何实际问题,解决方案可以正常加载和构建。如果有更高版本的软件包可用但不在本地.nuget缓存中,则会在解决方案启动时下载并安装。我尚未测试带有预发布或构建元数据标记的修补程序号。


更新:自从发布了 Visual Studio 2017 15.3.1 版本以来,解决方案资源管理器更好地处理了引用包中的浮动依赖项,不再出现错误。如果您在 .NET Core 项目中手动更改包版本,使用“编辑 .csproj”功能,界面可能会显示警告感叹号,但卸载和重新加载项目可以消除这些警告。 - Aaron

2

我在使用Nuget还原包的构建服务器上遇到了这个问题。后来发现构建流程使用的是旧版本Nuget,在升级Visual Studio之后出现了问题。更新Nuget版本解决了我的问题。


你是如何在构建管道上更新Nuget版本的? - BHANG
2
@BHANG 我使用 Azure Pipelines:添加任务 NuGet 工具安装程序。它允许您指定管道应使用哪个 NuGet 版本。 - Soundislate

1

可能的解决方法

尝试这样做:将项目位置更改为简单的位置,例如放置在桌面上。

可能的原因:可能无法加载,因为路径存在问题(包括空格、特殊字符等)。

参考:
我的旧路径: C:\Users\Corey\Google Drive\College\Semesters\2018\Spring\CSIS 434 (Programming)\Projects\Project 1
我的新路径是:C:\Users\Corey\Desktop

结论:从安德鲁的解决方案中可以看出,微软仍在努力解决这个问题。无论如何,这种解决方法可能适用于您!


你在CSIS 434上怎么样了,Corey? - bubbleking

1
由于VS2017对SemVer的支持很差,我遭遇了这个问题。他们在project.json文件中尝试了一些支持,但是在转换为.csproj时,他们做得非常糟糕。
我原本有:
<Project ToolsVersion="15.0" Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <Version>0.2.1-alpha</Version>
    ...

这在VS2017中部分支持,即它可以编译,但由于.NET的某些部分识别SemVer后缀,所以会破坏NuGet并存在许多其他问题。
解决方法是删除后缀:
<Project ToolsVersion="15.0" Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <Version>0.2.1</Version>
    ...

现在 NuGet 工作正常。

1
也许可以使用 VersionPrefixVersionSuffix 元素? - Stephen Drew
1
@StephenDrew 这些听起来像是对此问题的一种变通方法。VS2015和VS2017RC1项目使用project.json与SemVer数字,升级到MyApp.csproj时保留了完整的SemVer数字(它不支持),但应该将VersionSuffix分离出来。 - Keith
1
没有帮助,因为我的csproj文件中甚至没有版本标签 :/ 但我使用的是最新的VS2017,出现了这个错误。 - Pascal
@Pascal 为这个项目修复了它。我猜这种症状可能有不止一个原因。 - Keith
很可能是这样,Keith。我只是获取常见类库 (csproj 文件) ,而且那些项目文件几乎是空的... - Pascal

0

对我来说,解决方案路径中有一个撇号和一个空格(C:/Users/[myName]'s PC/etc)。我将路径更改为只有C:/,然后它就可以工作了 :)


0

我发现了导致这个错误的另一个问题。

如果你为项目添加包详细信息,并使用三位数字指定版本,比如说1.0.0,那么就会出现这个错误。

如果你将版本指定为1.0.0.0,解决方案将能够完美地构建。我想这会破坏一些内部验证,因为这也会在csproj文件中设置Version

简而言之:

正确做法:<Version>1.0.0.0</Version>

错误做法:<Version>1.0.0</Version>

更新:请参见Keith的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接