2

MSBuild に関するトリッキーな問題が発生しています。複数の Web サイトを含むソリューション ファイルがあります。各 Web サイトには、共通プロジェクトからの MVC ビューおよびその他の Web サイト コンテンツのコピーが必要です。その共通プロジェクトは、共有組織スペースからファイルをコピーします。以下に図を示します。

                          サイト A
  OrgShared <- 共通 <- サイト B
                          サイト C

ファイルのコピーは、ファイルの PreBuildEvent を通じて実行され.csprojます。問題は、検出された依存関係のビルド イベントが発生する前に PreBuildEvent コマンドが実行されることです。したがって、イベントのシーケンスは次のとおりです。

1. サイト A がビルドされます
   a. Prebuild ステップが実行されます (Common からファイルをコピーします)。
   b. コモンが構築されます
      私。ビルド前のステップが実行されます (OrgShared からファイルをコピーします)
      ii. ビルド & ポストビルドが実行されます
   c. ビルドとポストビルドが実行されます
2. サイト B が構築されます
   a. Prebuild ステップが実行されます (Common からファイルをコピーします)。
   b. ビルドとポストビルドが実行されます

問題は、手順 1a で発生します。Common prebuild ステップがまだ実行されていないため、サイト A は OrgShared から間接的に来るファイルを受け取りません。

OrgShared から直接コピーしなければならないサイト A、B、C に依存せずに、この依存関係の問題を効果的に解決するにはどうすればよいですか?

4

1 に答える 1

2

理解した。サイト A が Common の前に構築された理由は、.slnファイル内の順序のためです。ソリューションの順序を変更した後、最初に PreBuildEvent を Common で実行することができました。

前:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site A", "SiteA.csproj", "{6E7FAE47-74A6-4740-9AC5-9599E850E834}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common.csproj", "{C510B337-7459-4494-BBCB-B79FECD2AA66}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site B", "SiteB.csproj", "{F3CAFCE9-A96D-4EE5-BE09-420E27344345}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site C", "SiteC.csproj", "{A50C5DE2-4846-40F2-86B1-B103F413DE0F}"
EndProject

後:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common.csproj", "{C510B337-7459-4494-BBCB-B79FECD2AA66}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site A", "SiteA.csproj", "{6E7FAE47-74A6-4740-9AC5-9599E850E834}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site B", "SiteB.csproj", "{F3CAFCE9-A96D-4EE5-BE09-420E27344345}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Site C", "SiteC.csproj", "{A50C5DE2-4846-40F2-86B1-B103F413DE0F}"
EndProject
于 2012-06-14T02:43:25.037 に答える