我有一个包含大约15个.csproj
项目的Visual Studio 2012 C#解决方案。Visual Studio 2012 C#解决方案,并行构建竞态条件
每个项目都使用在启动构建之前生成的通用foo/bar.cs
文件。
我尝试过各种方法:
- 预生成事件
- 定制的MSBuild的
BeforeBuild
目标
单独创建每个项目工作正常。但是一旦我使用“构建解决方案”,我就面临一个竞争条件:目标中的一个尝试编译foo/bar.cs
,而另一个目标正在重新创建目标。
此时,我意识到使用“Build Solution”为解决方案中的每个项目生成一个MSBuild.exe
进程。我认为,在开始构建项目之前,我会尝试一劳永逸地创建foo/bar.cs
。
也许我忽略了一些东西?有没有一种方法,将实现“建设前的所有产生foo/bar.cs
?
也许把文件放在一个共同的库项目中,并让15个项目引用该库?这样你只需要在你的库项目中包含生成命令。 –
我会做一个项目,其输出是foo/bar.cs,然后让其他项目依赖于该项目......或者将其制作成一个库(因为它看起来很喜欢你正在尝试做的语义)。 – IdeaHat
不幸的是这比“把它放在图书馆里”要复杂一些。另一个只做自定义“构建”目标的项目是诱人的。我将跟进 –