Web.Config可以在Microsoft MSBuild之外转换吗? [英] Web.Config transforms outside of Microsoft MSBuild?

查看:109
本文介绍了Web.Config可以在Microsoft MSBuild之外转换吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在MSBuild之外使用Microsoft的XML文档转换来准备web.configs?我想使用PowerShell进行这些转换,而不必通过MSBuild引擎运行它.如果Microsoft使用了标准XSLT,则可以在PowerShell中轻松完成.据我所知,我必须使用需要构建引擎的C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll. 谢谢

Is it possible to use Microsoft's XML document transform, for preparing web.configs, outside of MSBuild? I would like to use PowerShell to do these transform without having to run this through the MSBuild engine. If Microsoft had used standard XSLT it would be easy to do in PowerShell. From what I can tell I have to use their C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll which requires a build engine. Thanks

推荐答案

我创建了一个小函数来在PowerShell中处理Microsoft的XML文档转换.

I created a small function to handle Microsoft's XML Document Transform in PowerShell.

我将Microsoft.Web.XmlTransform.dll文件从Visual Studio构建文件夹复制到了脚本的路径,但是如果需要,您可以从源文件夹引用它.

I copied the Microsoft.Web.XmlTransform.dll file from Visual Studio build folder to my script's path, but you can reference it from the source folder if you'd like.

function XmlDocTransform($xml, $xdt)
{
    if (!$xml -or !(Test-Path -path $xml -PathType Leaf)) {
        throw "File not found. $xml";
    }
    if (!$xdt -or !(Test-Path -path $xdt -PathType Leaf)) {
        throw "File not found. $xdt";
    }

    $scriptPath = (Get-Variable MyInvocation -Scope 1).Value.InvocationName | split-path -parent
    Add-Type -LiteralPath "$scriptPath\Microsoft.Web.XmlTransform.dll"

    $xmldoc = New-Object Microsoft.Web.XmlTransform.XmlTransformableDocument;
    $xmldoc.PreserveWhitespace = $true
    $xmldoc.Load($xml);

    $transf = New-Object Microsoft.Web.XmlTransform.XmlTransformation($xdt);
    if ($transf.Apply($xmldoc) -eq $false)
    {
        throw "Transformation failed."
    }
    $xmldoc.Save($xml);
}

要使用web.release.config转换web.config:

To transform web.config using web.release.config:

XmlDocTransform -xml "Web.config" -xdt "Web.Release.config"

或者,您可以使用Sayed的自我引导Xml转换脚本,该脚本将帮助您获取Microsoft.Xml.Xdt.dll:

Alternatively, you can use Sayed's self-bootstraping Xml Transform script, which will take care of getting the Microsoft.Xml.Xdt.dll for you:

https://gist.github.com/sayedihashimi/f1fdc4bfba74d398ec5b

这篇关于Web.Config可以在Microsoft MSBuild之外转换吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆