Microsoft.Build エンジンを使用して別のアプリケーションから Web サイトをコンパイルしていますが、正しい展開可能なコンテンツを取得する際に問題が発生しています。
次の MSBuild コマンドを使用すると、Web サイトは正しくビルドされます。「Outdir」ディレクトリ (C:\output) には、bin フォルダー内のすべての DLL のコピーが含まれていますが、aspx ページは含まれていません。「WebProjectOutputDir」ディレクトリ (C:\weboutput) には、展開パッケージ全体 (DLL、aspx ページ、CSS など) の完全なコピーが含まれています。
msbuild website.sln /property:Outdir=C:\output\ /property:WebProjectOutputDir=c:\weboutput\
次のコード構造を使用して、上記のコマンドを再作成しようとしました。
Dictionary<string, string> globalProperties = new Dictionary<string, string>();
BuildParameters buildParameters = new BuildParameters();
buildParameters.DetailedSummary = true;
globalProperties.Add("OutDir", @"C:\output\");
globalProperties.Add("Configuration", configuration);
globalProperties.Add("WebProjectOutputDir", @"C:\weboutput\");
BuildRequestData buildRequest = new BuildRequestData(solutionFileFullPath, globalProperties, null, new string[] { "Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
コードが実行されると、上記のように Web サイトを構成するすべての DLL のコピーが「C:\output\」ディレクトリに作成されますが、「WebProjectOutputDir」パラメーターで指定されたディレクトリは空です。他の誰かが Microsoft.Build エンジンを使用して Web サイトをコンパイルしたことがありますか? もしそうなら、コードの配置可能なバージョンをどのようにして入手しましたか?