gpt4 book ai didi

c# - 使用 MSDeploy API 获取 Web 服务器的依赖项

转载 作者:行者123 更新时间:2023-11-30 19:48:38 24 4
gpt4 key购买 nike

我刚刚开始了解 MSDeploy (Microsoft.Web.Deployment.dll) 的 C# API,但我正在努力寻找一种方法来确定给定 Web 服务器的依赖关系。

基本上,我想要 C# 等效于以下 MSDeploy 命令行调用:

msdeploy.exe -verb:getDependencies -source:webServer

我试过了 the documentation ,但我没有运气。有人能指出我正确的方向吗?

最佳答案

在 Reflector 中检查了 MSDeploy 可执行文件后,getDependencies 操作似乎未由 API 公开(该方法是内部方法)。

所以我不得不转而调用命令行并处理结果:

static void Main()
{
var processStartInfo = new ProcessStartInfo("msdeploy.exe")
{
RedirectStandardOutput = true,
Arguments = "-verb:getDependencies -source:webServer -xml",
UseShellExecute = false
};

var process = new Process {StartInfo = processStartInfo};
process.Start();

var outputString = process.StandardOutput.ReadToEnd();

var dependencies = ParseGetDependenciesOutput(outputString);

}

public static GetDependenciesOutput ParseGetDependenciesOutput(string outputString)
{
var doc = XDocument.Parse(outputString);
var dependencyInfo = doc.Descendants().Single(x => x.Name == "dependencyInfo");
var result = new GetDependenciesOutput
{
Dependencies = dependencyInfo.Descendants().Where(descendant => descendant.Name == "dependency"),
AppPoolsInUse = dependencyInfo.Descendants().Where(descendant => descendant.Name == "apppoolInUse"),
NativeModules = dependencyInfo.Descendants().Where(descendant => descendant.Name == "nativeModule"),
ManagedTypes = dependencyInfo.Descendants().Where(descendant => descendant.Name == "managedType")
};
return result;
}

public class GetDependenciesOutput
{
public IEnumerable<XElement> Dependencies;
public IEnumerable<XElement> AppPoolsInUse;
public IEnumerable<XElement> NativeModules;
public IEnumerable<XElement> ManagedTypes;
}

希望这对尝试做同样事情的其他人有用!

关于c# - 使用 MSDeploy API 获取 Web 服务器的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com