这个字符串中的非法字符是啥?我收到 MSBUILD :错误 MSB3095

Posted

技术标签:

【中文标题】这个字符串中的非法字符是啥?我收到 MSBUILD :错误 MSB3095【英文标题】:What's the illegal character in this string ? I'm getting MSBUILD : error MSB3095这个字符串中的非法字符是什么?我收到 MSBUILD :错误 MSB3095 【发布时间】:2011-11-02 21:00:43 【问题描述】:

到目前为止,我在 TFS2010 中创建了一些构建定义没有问题。

MSBUILD 命令:


C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /noconsolelogger "C:\Builds\Neptune\Sources\\Branches\v5.0-Ehub\EHub-5.0.sln" /m:1 /fl /flp:"logfile=C:\Builds\Neptune\Sources\\Branches\v5.0-Ehub\EHub-5.0.log;encoding=Unicode;verbosity=detailed" /p:SkipInvalidConfigurations=true /p:OutDir="C:\Builds\Neptune\Binaries\\" /p:Configuration="Site" /p:Platform="Mixed Platforms" /p:RunCodeAnalysis="False" /p:VCBuildOverride="C:\Builds\Neptune\Sources\\Branches\v5.0-Ehub\EHub-5.0.sln.Mixed Platforms.Site.vsprops" /dl:WorkflowCentralLogger,"C:\Program Files\Microsoft Team Foundation Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Detailed;BuildUri=vstfs:///Build/Build/1222;InformationNodeId=2168680;TargetsNotLogged=GetNativeManifest,GetCopyToOutputDirectoryItems,GetTargetPath;TFSUrl=http://ldu01:8080/tfs/Nova.com;"*WorkflowForwardingLogger,"C:\Program Files\Microsoft Team Foundation Server 2010\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Detailed;"

我收到此错误:


(Site target) -> MSBUILD : error MSB3095: Invalid argument. Illegal characters in path. [C:\Builds\Neptune\Sources\Branches\v5.0-EHub\EHub-5.0.sln]

但我没有看到路径中有任何非法内容,它只是一条普通路径并且可以正常工作。怎么回事?

编辑:删除了双斜杠,删除了多余的点,删除了减号,没有任何效果。

编辑:让我说得更具体一些。它构建了解决方案的一部分,但是一旦达到一定程度,它就会给我这个错误并返回。

编辑:还有更多细节。它似乎失败的特定行:

Using "CombinePath" task from assembly "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "CombinePath"
MSBUILD : error MSB3095: Invalid argument. Illegal characters in path. [C:\Builds\Pluto\Sources\Branches\v5.0-Ehub\EHub-5.0.sln]
Done executing task "CombinePath" -- FAILED.
Done building target "Site" in project "EHub-5.0.sln" -- FAILED.
Done executing task "CallTarget" -- FAILED.
Done building target "Build" in project "EHub-5.0.sln" -- FAILED.
Done Building Project "C:\Builds\Pluto\Sources\Branches\v5.0-Ehub\EHub-5.0.sln" (default targets) -- FAILED.

【问题讨论】:

除了你的命令中的双斜线之外,我没有看到任何异常。但是,特殊字符可能无法在 html 元素中很好地显示,所以我会说走你的路并针对Path.GetInvalidPathChars() 运行它以查看导致问题的原因。 【参考方案1】:

减号 ('-') 怎么样? 我不确定减号在这里是否有效。

【讨论】:

我很确定减号是路径的有效字符,但无论如何都对其进行了测试以查看它是否是一些 MSBUILD 特性,但它仍然不起作用。【参考方案2】:

令人惊讶的是(或不是),问题似乎与非法字符完全无关,也与[C:\Builds\Neptune\Sources\Branches\v5.0-EHub\EHub-5.0.sln] 字符串无关。

解决方案中的一个项目具有无效引用。另一个有一个无效的 dll.refresh 路径

这两件事中的一件导致了问题,但我没时间了,所以我不会测试是哪一件造成的。

我修复了引用,问题就消失了。

不过,我仍然很好奇为什么会收到错误 error MSB3095: Invalid argument. Illegal characters in path.

【讨论】:

Google 认为是 .refresh【参考方案3】:

我遇到了这个错误,发现有几个 .refresh 文件被保存为 ANSI 文件类型。我将它们加载到记事本中并将它们保存为 Unicode 文件,这解决了我的问题。

【讨论】:

【参考方案4】:

我在从 VSS 迁移到 TFS 时遇到了同样的问题。我认为该错误是由 asmx Web 服务引起的。

分辨率:

    转到文件、源代码管理、更改源代码管理 选择产生错误的项目 点击解除绑定 重新选择项目 点击绑定

它应该工作。如果没有,在第一步(更改源代码管理)之前删除网络引用,在第五步之后(单击绑定)右键单击项目然后撤消签出。

【讨论】:

【参考方案5】:

我遇到过一次。我正在从命令提示符运行 msbuild,我需要从 elevated 命令提示符(即作为管理员)运行它。

完全误导性的错误信息!

【讨论】:

以上是关于这个字符串中的非法字符是啥?我收到 MSBUILD :错误 MSB3095的主要内容,如果未能解决你的问题,请参考以下文章

java编程中出现的错误“非法字符:\56288”是啥意思?

从api流明获取数据时出现错误的非法字符串偏移[重复]

Visual Studio - 路径中的非法字符

如何修复 mex 文件中的非法字符错误

ZipFile.ExtractToDirectory "路径中的非法字符"

替换文件名中的非法字符