升级到Visual Studio 2012后,MSBuild错误"CSC:错误CS2001:无法找到源文件'x'与链接文件

Jho*_*n P 32 msbuild visual-studio-2012

自动升级.Net 4.0 Web应用程序的项目文件以使用Visual Studio 2012后,一切正常,但是在编译时我遇到了很多错误,如下所示:

说明:无法找到源文件'..\..\..\..\.. \文件路径'

档案:CSC

当在"VS2012的开发人员命令提示符"中尝试使用MSBuild构建(仅传递项目完整路径,没有其他参数)时,我得到了基本相同的错误:

"CSC:错误CS2001:无法找到源文件'x'"

所有错误都是指位于我们代码分支中不同深度的其他Web应用程序项目中的链接文件(aspx,cs等)(这就是为什么路径开头的所有'.... \'的原因)

对我来说,它看起来像文件长度的问题,我在使用MSBuild在我们的CI服务器上构建项目时遇到了同样的问题,我能够通过操作项目文件来管理它,然后使用自定义脚本构建它们需要移动分支或减少项目的深度,我没有必要移动任何东西,当时重要的是使用Visual Studio 2010的开发人员可以编译所有内容而不会出现问题.我从中了解到使用MSBuild编译/构建与DevEnv/VS不同,例如MSBuild不支持构建安装项目和DevEnv.

由于VS 2012/DevEnv 2012现在正在发生这种情况,再加上VS 2012不再支持安装项目(如msbuild),加上VS/DevEnv与文件长度有同样的问题,看起来VS 2012最终使用了msbuild在引擎盖下或更紧密地集成,但我没有找到任何文章来证实这一点.

由于几个原因(大代码库,大量项目,风险,时间,努力等),改变分支结构/改变项目的深层现在不是一个选择.

有人在Visual Studio 2012中有替代解决方案或修复此问题吗?

问候,

PD:BTW我已经检查了这篇文章MSBuild错误与链接文件,但就像我说在更改路径之前它现在不是一个选项.

Jho*_*n P 1

我知道我不久前就做过这个问题,但为了值得,我们最终采用的方法是:

  • 找到报告为太长的文件。
  • 通过减少名称长度和/或容器文件夹的长度或减少文件夹嵌套级别来减少这些文件的完整路径长度。因此减少了全路径长度。
  • 更新依赖项目上已更改文件的链接(重新链接)。

这解决了开发人员工作站和使用 MSbuild 的 CI/Deploy 服务器上的 Visual Studio 2012 的问题。

对于我的场景,这种方法风险较小,并且比移动完整项目/解决方案以减少其文件夹嵌套级别或减少文件夹名称以及必须更新依赖项目/解决方案的所有引用所需的工作量更少。