Visual Studio - 路径中的非法字符

Posted

技术标签:

【中文标题】Visual Studio - 路径中的非法字符【英文标题】:Visual Studio- Illegal characters in path 【发布时间】:2018-01-29 11:10:17 【问题描述】:

这发生在 Visual Studio Community 2017 最新更新之后。 每次我尝试打开我的项目时,都会收到以下警告:

警告 IDE0006 加载项目时遇到错误。某些项目功能,例如对失败项目和依赖它的项目的完整解决方案分析,已被禁用。核心测试

然后当我运行构建时,我得到:

错误“ResolvePackageFileConflicts”任务意外失败。 System.ArgumentException:路径中有非法字符。 在 System.IO.Path.CheckInvalidPathChars(字符串路径,布尔检查附加) 在 System.IO.Path.GetFileName(字符串路径) 在 Microsoft.NET.Build.Tasks.ItemUtilities.GetTargetPath(ITaskItem item) 在 Microsoft.NET.Build.Tasks.ItemUtilities.GetReferenceTargetPath(ITaskItem item) 在 Microsoft.NET.Build.Tasks.ConflictResolution.ResolvePackageFileConflicts。c。 b__35_1(ConflictItem ci) 在 Microsoft.NET.Build.Tasks.ConflictResolution.ConflictResolver`1.ResolveConflicts(IEnumerable`1 conflictItems,Func`2 getItemKey,Action`1 foundConflict,Boolean commitWinner,Action`1 unresolvedConflict) 在 Microsoft.NET.Build.Tasks.ConflictResolution.ResolvePackageFileConflicts.ExecuteCore() 在 Microsoft.NET.Build.Tasks.TaskBase.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() Core.Tests

之后

错误 CS0006 元数据文件 'C:\tmp\backend\Tests\DataLoader.Tests\bin\Debug\DataLoader.Tests.dll' 找不到 EResourceConnector.Tests C:\tmp\backend\Tests\EResourceConnector.Tests \CSC 1 活动

项目路径仅使用拉丁字符。在构建服务器上构建正在运行,但在上次更新 VS 后我的计算机上却没有。我尝试重新安装 VS,但没有帮助。

那么对于这个问题有什么解决方案或至少提示吗?

编辑:我试图排除受此问题影响且有效的文件。但这不是我的问题的解决方案。 有趣的是,只有受影响的文件是单元测试。

EDIT2:我尝试使用最新的 Visual Studio 2017 在全新的 Windows 10 上构建整个解决方案,但它失败了,所以这显然是我的解决方案的问题,但仅限于新版本的 VS。我在 Visual Studio 2015 上尝试了我的解决方案并且构建工作正常。

无论如何,例如Core.Test.csproj 文件就是导致该问题的其中之一。 https://pastebin.com/kq7MFLV1

【问题讨论】:

如果清除所有 bin/obj/ 文件夹会发生什么? @CamiloTerevinto 删除了整个解决方案中两个文件夹中的所有内容,不幸的是它仍然相同。 【参考方案1】:

在您的情况下,问题是以下参考中的行返回:

<Reference Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <HintPath>
      ..\..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
      </HintPath>
</Reference>

将其更改为:

 <Reference Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <HintPath>..\..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
 </Reference>

【讨论】:

仅供参考,在发布日期:2017 年 8 月 22 日 - Visual Studio 2017 版本 15.3.2 中这仍然是一个问题。你可能想报告这个错误。 是的,这就是问题所在。在多个csproj 文件中有行返回......谢谢。 最近在带有 git commit flow 的 Rider IDE 中遇到了这个问题。我在那里检查了重新格式化和重新排列我的代码,每次我提交某些东西时,我的构建都失败了。 @Delfi 和未来的我:(使用 VS15.8.9)当提示路径末尾有一个错误的引号(“)时,我遇到了同样的问题。它导致所有内容都显示为无效引用. 这以前在VS2015中很好&lt;HintPath&gt;$(ExternalBin)\Mvp.Xml.dll"&lt;/HintPath&gt;【参考方案2】:

我遇到了类似的问题,但在我的情况下,它归结为参考中的奇怪字符:

<Reference Include="Office, Version=11.0.0.0, &#xD;&#xA;        Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<Reference Include="stdole, Version=7.0.3300.0, &#xD;&#xA;        Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

将以上内容改为:

<Reference Include="Office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<Reference Include="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

解决了这个特定问题。

提示:我通过反复试验解决了这个问题。我将csproj文件中的ItemGroups全部注释掉,一一重新引入。尽管您的项目在此过程中可能无法构建,但当发生上述错误时很清楚,因为您只会看到此错误,而不是由于缺少 ItemGroups 而导致的其他构建错误。

【讨论】:

我进行了一些调查,在项目的csproj 文件中没有发现任何可疑之处。这是那个pastebin.com/kq7MFLV1【参考方案3】:

@Delfi - 我在 2017 年 8 月 18 日星期五更新了 VS 2017,今天在某些项目上开始出现相同的“ResolvePackageFileConflicts”构建错误。我注意到当 .csproj 文件中的任何引用具有提示路径时会发生问题。使用记事本从受影响的引用中删除提示路径后,构建现在可以正常工作了。

这似乎是最新的 VS 2017 更新的问题。 Visual C# 2017 00369-60000-00001-AA019 微软 Visual C# 2017

例子:

<Reference Include="Atalasoft.dotImage.WinControls, Version=10.0.6.53316, Culture=neutral, PublicKeyToken=2b02b46f7326f73b, processorArchitecture=x86">
 <HintPath>..\..\..\..\..\Program Files\Atalasoft\DotImage 10.0\bin\4.0\Atalasoft.dotImage.WinControls.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
</Reference>

改为...

*<Reference Include="Atalasoft.dotImage.WinControls, Version=10.5.0.61849, Culture=neutral, PublicKeyToken=2b02b46f7326f73b, processorArchitecture=x86">
  <SpecificVersion>False</SpecificVersion>
</Reference>*

希望这可以帮助您解决问题。

注意:我没有尝试过,但也可以通过解决方案资源管理器在项目中删除和重新添加受影响的引用来解决此问题。

【讨论】:

不幸的是它没有帮助,但感谢您的回答。我删除了加载错误的项目中的 HindPath,但它们仍然加载错误。 @Delfi 您是否尝试在 .csproj 文件中查找指定路径的任何其他位置?也许可以尝试查看一些东西,因为在这个 VS 版本中,.csproj 文件中的路径检查似乎被破坏了。只是一个想法。【参考方案4】:

如果您遇到 Azure Function 的问题,此解决方案将有效。

    关闭 Visual Studio 在开始(窗口搜索)中键入 %localappdata% 删除文件夹 AzureFunctionsTools 重启 Visual Studio 选择您的项目并运行。

有效!

【讨论】:

【参考方案5】:

这条线我也遇到了同样的问题

  <HintPath>&gt;$(SolutionDir).lib\Foo.Bar.dll</HintPath>

删除 &amp;gt; 对我有用。

  <HintPath>$(SolutionDir).lib\Foo.Bar.dll</HintPath>

【讨论】:

以上是关于Visual Studio - 路径中的非法字符的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio sizeof 非法操作数

FxCop 对我在非团队系统 Visual Studio 资源中使用格式字符串提出问题

有没有办法在Visual Studio中复制/粘贴时自动转义反斜杠?

Visual Studio 中的非英语数字格式

Visual Studio 非托管 C++ 智能文件资源管理器

Visual Studio 中的相对路径