gpt4 book ai didi

visual-studio - 是否可以更新 Web 部署项目中的 WCF 服务引用

转载 作者:行者123 更新时间:2023-12-04 05:58:05 24 4
gpt4 key购买 nike

我认为问题标题巧妙地总结了我所追求的。我有一个 Web 应用程序和一个服务,我希望构建脚本检查服务自上次构建以来是否已更新,如果是,请运行右键单击服务时可用的“更新服务引用”脚本.

有什么想法吗?

最佳答案

我们使用 PowerShell 脚本为我们运行 wsdl.exe 工具(或者在您的情况下为 svcutil.exe)。该脚本运行到服务并提取新的 wsdl 并重新生成代理。你可以用它去PS。唯一的技巧是正确获取命名空间,但 wsdl.exe 上有一个选项。

<Target Name="UpdateWebReferences">

<Exec WorkingDirectory="$(SolutionRoot)"
Command="$(PS) -Noninteractive -Command $(SolutionRoot)\tools\PowerShell\Compile-Wsdl.ps1 -ukf $(ConfigFilePath)"
Condition=" Exists('$(ConfigFilePath)') And Exists('$(SolutionRoot)\tools\PowerShell\Compile-Wsdl.ps1') " />

以上内容用于您的团队 build 。 powershell 函数的内容如下:

$projectFile = [xml]( Get-Content $projectFilePath ) 

if ( $projectFile -and $WSDL_LANGUAGE -ne "VB")
{
$ns = $projectFile.Project.PropertyGroup[ 0 ].RootNamespace
}
else
{
$ns = $NAMESPACE_PREFIX
}

foreach( $webRefDir in Get-ChildItem $dir.FullName )
{
$webRefName = $webRefDir.Name

if ( [System.String]::IsNullOrEmpty( $ns ) )
{
$namespace = $webRefName
}
else
{
$namespace = $( "{0}.{1}" -f $ns, $webRefName )
}

Write-Host $( "Compiling Web Reference: {0} using Namespace: {1}..." -f $webRefName, $namespace )

$outputPath = $( "{0}\{1}" -f $webRefDir.FullName,$REFERENCE_FILE )

$xpath = "/configuration/appSettings/add[@key='{0}']" -f $webRefName

if ( $URL_KEY_FILE )
{
$xml = [xml](Get-Content $URL_KEY_FILE)
$url = $xml.SelectSingleNode( $xpath )

if ( $url )
{
$urlOrPath = $url.Value
}
else
{
Write-Warning $( "Could not find key {0} in {1}..." -f $webRefName, $URL_KEY_FILE )
}
}
else
{
$urlOrPath = $( Get-ChildItem $webRefDir.FullName -r -filter "*.wsdl" ).FullName
}

if ( $urlOrPath )
{
wsdl /nologo /language:$WSDL_LANGUAGE /n:$namespace /o:$outputPath /urlkey:$webRefName $urlOrPath
}

Write-Host "....................................................."
}

为此,您只需 checkin “Web References”文件夹即可。它遍历每个目录并创建正确的命名空间。脚本很长,但我愿意通过电子邮件发送。

关于visual-studio - 是否可以更新 Web 部署项目中的 WCF 服务引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566867/

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