Nous utilisons un script PowerShell pour exécuter l'outil wsdl.exe pour nous (ou dans votre cas svcutil.exe). Le script se termine au service et tire un nouveau wsdl et re-gens le proxy. Vous pouvez utiliser pour accéder à PS. La seule astuce consiste à obtenir le namespacing correctement, mais il existe une option sur wsdl.exe pour cela.
<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') " />
GOES ci-dessus lors de la construction de l'équipe. La viande de la fonction Powershell est comme suit:.
$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 "....................................................."
}
Tout ce qui est nécessaire pour cela vous devez avoir le dossier « Références Web » réinsérée Il boucle sur chaque répertoire et crée l'espace de noms correct. Le script est long, mais je serais prêt à l'envoyer par courriel.
pouvez-vous fournir un exemple de code? – Jaguar