![](/img/trans.png)
[英]Visual Studio 2017 warning errors when starting a debugger for multiple Visual Studio 2012 C# projects in a solution
[英]Visual Studio 2012 C# solution, parallel build race condition
我有一个Visual Studio 2012 C#解决方案,其中包含大约15个.csproj
项目。
每个项目都使用在启动构建之前生成的通用foo/bar.cs
文件。
我尝试了各种方法:
BeforeBuild
目标 单独构建每个项目都可以。 但是,一旦我使用“构建解决方案”,我就面临一个竞争条件:其中的一个目标试图在另一个目标重新创建foo/bar.cs
时对其进行编译。
到那时,我意识到使用“生成解决方案”会为解决方案中的每个项目生成一个MSBuild.exe
进程。 我认为,在开始构建项目之前,一劳永逸地生成foo/bar.cs
尝试将foo/bar.cs
无效。
也许我忽略了什么? 有没有一种方法可以在全部foo/bar.cs
之前实现“生成foo/bar.cs
?
这是修复它的笨拙方法。
msbuild myproject.proj /maxcpucount:1
正如@MadScienceDreams所建议的那样,我创建了一个其他项目依赖的单独项目。
然后我编辑了.csproj
文件,以导入$(MSBuildBinPath)\\Microsoft.Common.targets
而不是$(MSBuildBinPath)\\Microsoft.CSharp.targets
。
然后,我根据Exec
任务重写了Build
目标。
before.<SolutionName>.sln.targets
放在sln文件旁边的文件,将在所有csproj之前执行,这在msbuild中有效,但在Visual Studio中不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.