我有一個包含大約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
不幸的是這比「把它放在圖書館裏」要複雜一些。另一個只做自定義「構建」目標的項目是誘人的。我將跟進 –