我有一个Visual Studio 2012 C#解决方案,其中包含大约15个.csproj
个项目。
每个项目都使用在启动构建之前生成的公共foo/bar.cs
文件。
我尝试了各种方法:
BeforeBuild
目标单独构建每个项目都可以正常工作。但是一旦我使用“构建解决方案”,我就会遇到一个竞争条件:目标中的目标会在另一个目标重新创建时尝试编译foo/bar.cs
。
此时,我意识到使用“构建解决方案”会在解决方案中为每个项目生成一个MSBuild.exe
进程。我认为这使我在开始构建项目之前一劳永逸地生成foo/bar.cs
无效。
也许我忽略了什么?是否有一种方法可以在构建所有内容之前实现“生成foo/bar.cs
”
答案 0 :(得分:1)
这是修复它的方法。
msbuild myproject.proj /maxcpucount:1
答案 1 :(得分:0)
正如@MadScienceDreams建议的那样,我创建了一个其他项目依赖的独立项目。
我编辑了.csproj
文件以导入$(MSBuildBinPath)\Microsoft.Common.targets
而不是$(MSBuildBinPath)\Microsoft.CSharp.targets
。
然后我根据Build
任务重写了Exec
目标。
答案 2 :(得分:0)
before.<SolutionName>.sln.targets
放在sln文件旁边,将在所有csproj之前执行,这在msbuild中有效,但在Visual Studio中无效。