安装 Nuget 包错误“路径不是合法形式”

Posted

技术标签:

【中文标题】安装 Nuget 包错误“路径不是合法形式”【英文标题】:Install Nuget Package error "The path is not of a legal form" 【发布时间】:2015-10-19 04:56:17 【问题描述】:

尝试安装 NuGet 包时 RestSharp 我收到错误 The path is not of a legal form 并且该包未安装。

使用Install-Package RestSharp从控制台安装时,有很多以下消息:

项目 C:\Users\myName\Source\Workspaces\Project\Solution\packages\RestSharp.105.1.0\lib\net35\RestSharp.dll 在您的工作区中找不到,或者您没有权限 访问它。

新发布的 Visual Studio 2015(社区版)会出现这种情况。

【问题讨论】:

这看起来像 NuGet 中的 bug 已报告。 感谢您查找此内容。我什么也没找到。我想我有点太急于升级到 VS 2015 ......我会继续研究它,也许我会找到解决方法。 我有同样的问题,我也有 TFS。巧合?我想不是。看我的回答:D 当我在报告为麻烦制造者的软件包(包括 RestSharp)上尝试它时,效果很好。那个错误信息看起来很假,我的水晶球说真正的问题是路径太长并且超过259个字符。 我自己也遇到过这个问题;但今天早上我更新了 nuget 包管理器,它似乎对我来说工作正常。现在是这样。 【参考方案1】:

编辑:如果您有 NuGet 3.0,那就是问题所在。只需更新 NuGet,一切都会正常。以下步骤适用于 NuGet 3.0,这很痛苦且容易出错。不要经历这样的痛苦,选择简单的步骤,更新你的 Nuget!

我更新到 VS Express 2015,从那时起我经历了一些冒险。

TL;DR如果您“禁用”TFS(源代码管理),您应该能够安装该软件包。然后再次将解决方案添加到源代码管理中,但它给我带来了很多问题。

所以...

我看到你有 TFS。我也有。

另外,我发现您收到的错误消息与我相同。

我尝试安装 LanguageExt(一个很棒的 C# 6 库),但在尝试安装其依赖项之一(System.Collections.Immutable)时失败。

如果您想了解所有这些内容,请备份您的项目文件夹。

这就是我所做的:

1 - 将我的解决方案文件夹复制到其他地方。

2 - 打开解决方案。 VS 巧妙地让我将其添加到源代码管理中,但我不想。

3 - 尝试Install-Package LanguageExt

4 - 意外成功

5 - “好吧,让我再次将它添加到 TFS 源代码管理”

我的旅程从这里开始。

由于我对 TFS 的经验很少,我遇到了成千上万的冲突、文件消失和再次出现等等。

但经过一些工作,我让它运行起来了。

这是值得的。

但解决方案并不大,所以很容易。

【讨论】:

因为我刚拿到 3.1 版,所以来这里更新它,现在它可以工作了。你太棒了,*** 太棒了。谢谢。 谢谢它的工作。更新 Nuget 包管理器后,我不得不重新启动 Visual Studio 2015。 遇到了同样的问题,接受了更新 NuGet(从 3.0.6 到 3.4.3)的建议,并且成功了。 自从我发布这个解决方案已经一年半了,我仍然在为现在应该已经解决的问题获得支持,或者至少我认为是这样。 Danü 是应该得到支持的人:/【参考方案2】:

下面的包也有同样的问题,通过“工具 -> 扩展和更新 -> 更新”将 NuGet 更新到 v.3.1.1.0,现在一切正常。谢谢!

Microsoft.Bcl

Google.Apis.Calendar.v3

Razor 引擎

示例错误,以便更多人可以找到此线程:

"Install-Package : 路径不是合法形式。 在行:1 字符:16 + 安装包

【讨论】:

【参考方案3】:

我的 VS 2015 遇到了同样的问题,我只是通过在 VS 2013 中打开相同的解决方案通过 nuget 添加了引用,然后在 VS 2015 中重新打开它以进行日常工作。

【讨论】:

【参考方案4】:

我在 nuget 包管理器的 3.5.0.1484 版本上发生了这种情况。在我的例子中,来自 dev 分支的合并更改了 packages.config 文件以列出不再存在的包的版本。加载解决方案后,任何尝试在包管理器控制台中使用包命令之一都失败,并出现路径不是合法形式。 错误。我最终使用解决方案级别的 gui 来整合受影响的软件包并解决了错误。可能我也可以恢复 packages.config 文件。

【讨论】:

【参考方案5】:

请在 package.config 中手动添加一个条目,如下所示并构建解决方案。这对我有用。

【讨论】:

【参考方案6】:

我在 VS 2017 中遇到了同样的问题,使用了另一个包 (WPFLocalizeExtension)。

解决方法是从项目中删除 .nuget 文件夹,然后转到 .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>

在那之后(在尝试了全世界所有现有的解决方案之后),我重建了项目,程序运行成功并且运行完美。

nugget 存储库的 bug 真是令人难以置信....您需要某种魔法来解决每种特定情况,这太可怕了。

希望这个解决方案对任何人都有帮助。

【讨论】:

以上是关于安装 Nuget 包错误“路径不是合法形式”的主要内容,如果未能解决你的问题,请参考以下文章

由于请求错误,无法安装 nuget 包

Visual Studio 编译错误 - 计算机中缺少 nuget 包,但 nuget restore 说所有包都已安装?

Nuget包安装错误 - 无效的URI:无法解析权限/主机

无法安装 Nuget 包

错误:找不到 2 个 Android X 程序集,请确保安装以下 NuGet 包:- Xamarin.AndroidX.MediaRouter

NuGet 包安装失败“包还原失败。回滚 <xamarin.android> 的包更改”