【发布时间】:2014-03-17 10:01:21
【问题描述】:
我有一个 VS2012 解决方案,包含 10 个项目,但突然间,我无法再将我的 Services 项目发布到任何文件夹。
当我尝试发布到 D:\temp 时,我收到此错误:
The expression "[System.IO.Path]::GetFullPath(obj\Release%25252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252528Prod%25252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252529\)" cannot be evaluated. The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets
嗯?
VS2012(更新 4)似乎使用了我的配置名称“Release(Prod)”并将其完全搞砸了,导致 GetFullPath 生成的路径名太长。
我该如何解决这个问题?
出于绝望,我尝试在 VS2013 中构建和发布相同的项目 - 它有相同的错误消息。
我的一位同事说他看到了同样的事情,但通过从他的配置名称中删除空格来修复它。我试过这个,这就是为什么我的配置名称现在是“Release(Prod)”而不是“Release (Prod)”,但它没有任何区别。
我也打开了这个错误提示的文件是错误的原因: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets
..并注意到其中有一些关于 AnyCPU 平台名称的内容。我尝试让我的服务项目使用“AnyCPU”和“Any CPU”(郁闷的叹息),但似乎都没有任何区别。
<PropertyGroup Condition=" '$(IntermediateOutputPath)' == '' ">
<IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU' Or '$(PlatformName)' == ''">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
. . .
</PropertyGroup>
有其他人看到这个问题吗?
(稍晚一点..)
这太奇怪了(而且令人沮丧)。
我的解决方案有 5 种配置 - 默认的调试和发布配置,以及用于测试、预生产和生产环境的额外配置。
如果我选择这三个包含括号的配置中的任何一个,我会收到这个荒谬的“指定路径太长”错误,因为 VS2012 损坏了路径名(如我上面的第一个屏幕截图所示)。
我不禁想知道...这是某种 VS2012 错误,在配置名称中处理空格或括号?
【问题讨论】:
标签: visual-studio-2012 publish