0

リポジトリから.NETソリューションをダウンロードしてビルドするサービスに取り組んでいます(継続的インテグレーションビルドサービスとは異なります)。私が知りたいのは、Microsoft.Build名前空間クラスを介してプログラムでMSBuildを使用して、ソリューションとプロジェクトをメモリにロードし、最初に一時フォルダーのディスクに保存せずにビルドできるかどうかです。

私はまだMSBuildを学び、物事を試していますが、Stack Overflowの誰かがこれを試し、洞察を持っていると思います。

4

2 に答える 2

3

これが良い考えかどうかは言えませんが、それは可能です。

ProjectInstanceには、 Create(XmlReader)メソッドを介して構築できるProjectRootElementを受け入れるコンストラクターがあります。ご存知かもしれませんが、XmlReaderはMemoryStreamを含むさまざまなストリームに接続できます。

このようなものは次のようになります。

var xmlReader = XmlTextReader.Create([your existing memory stream]);
var project = ProjectRootElement.Create(xmlReader);

var buildParams = new BuildParameters();
var buildData = new BuildRequestData(new ProjectInstance(project),
    new string[] { "Build", "Your Other Target Here" });

var buildResult = BuildManager.DefaultBuildManager.Build(buildParams, buildData);
于 2012-10-19T22:44:28.503 に答える
1

MSBuildと関連するすべてのコンポーネントを調査した後、プロジェクトをビルドする前に、プロジェクト全体をファイルシステムにセットアップする必要があるように見えます。残念ながら、私がやろうとしていることは、提供されているツールセットでは実行できません。

于 2012-11-01T16:44:37.667 に答える