无法找到MSBuild错误CS2001源文件

nor*_*uid 3 msbuild command-line visual-studio-2012

我正在尝试使用MSbuild在我的一个项目上构建命令行.解决方案和项目在VS2012中构建良好,但是当我执行包含的批处理文件时

msbuild.exe project.csproj
Run Code Online (Sandbox Code Playgroud)

它失败.有很多错误我甚至无法向上滚过它们.对于不同的文件,它们都是相同的错误,所有这些都来自解决方案中的其他项目:

CSC : error CS2001: Source file 'folder\filename.cs' cound not be found [c:\folder\project.csproj]
Run Code Online (Sandbox Code Playgroud)

我发现了其他有关文件名长度的问题.我尝试删除路径中的每一层,但无济于事.我觉得奇怪的是源文件路径不是相对的,即使它找不到的文件确实来自其他项目.我在这里有点不知所措.为什么我的构建失败?

nor*_*uid 6

好吧,虽然这可能不是其他人看到的同样问题,但我解决了我的具体问题:

有问题的项目是一个MVC 4项目.MVC有一个选项,您可以在项目文件中启用该选项,在编译过程中构建剃刀视图,表面上是这样您可以捕获构建时通常会出现的运行时错误.

这个功能并没有得到特别好的支持,当你从命令行构建时,它开始在奇怪的地方寻找东西,因为它正在进行这些中间构建.视图在临时目录中构建,然后它尝试从项目目录中复制它,然后一切都崩溃了.

另外,我们需要知道一些后期构建事件的解决方案目录,但这对大多数人来说都是无关紧要的.我们还构建了一个包,然后直接部署,以便更容易地将东西复制到它需要去的各个地方.对于更复杂的项目,构建为一个包也可以正确解析项目可能具有的所有解决方案引用.为了完成,我把它包括在这里.

以下是使其全部正常工作的行:

msbuild.exe /v:q  projectName.csproj /t:Package /p:MvcBuildViews=false;SolutionDir=%SolutionDir%;DeployOnBuild=true
Run Code Online (Sandbox Code Playgroud)

以及真正解决问题的简单版本:

msbuild.exe projectName.csproj /p:MvcBuildViews=false;
Run Code Online (Sandbox Code Playgroud)

  • 我很难接受我自己的答案,但希望有我确切问题的人会对这个解决方案感到满意 (2认同)