2012-07-04 25 views
0

您好我已經在現有的webservice中編寫了新的功能。 我正在複製代理文件,當重建和複製到特定位置 我使用powershell但它不工作.i得到以下錯誤。無法使用vs2008複製代理文件powershell

**The term 'wsdl.exe' is not recognized as the name of a cmdlet, function, script 
file, or operable program. Check the spelling of the name, or if a path was in 
cluded, verify that the path is correct and try again. 
At C:\[path edited for security]\RebuildProxy.ps1:30 char:9 
+ wsdl.exe <<<< /fields "/l:CS" "/n:$namespace" "/out:$outCSFile" "/urlkey:Tes 
tEndpoint" "$wsdlUrl"; 
+ CategoryInfo   : ObjectNotFound: (wsdl.exe:String) [], CommandNot 
FoundException 
+ FullyQualifiedErrorId : CommandNotFoundException** 

後重建我得到的消息,該文件已被修改的源代碼編輯器[中的位置生成的代理已經存在的文件]之外的 請你幫我在這 下面貼的PowerShell代碼

param (
    [string]$webServiceProjFile = $(throw "webServiceProjFile paramter is required."), 
    [string]$serviceFile = $(throw "serviceFile parameter is required."), 
    [string]$outCSFile = $(throw "outCSFile paramter is required.") 
) 

if (! [IO.File]::Exists($webServiceProjFile)) 
{ 
    throw "$webServiceProjFile note found."; 
} 

if (! [IO.File]::Exists($outCSFile)) 
{ 
    throw "$outCSFile note found."; 
} 

# read the project file into an XML document. 
$projectFileXml = [xml] (Get-Content $webServiceProjFile); 

# access the configured IIS URL 
$serviceWsdlUrl = [string]::Concat($projectFileXml.Project.ProjectExtensions.VisualStudio.FlavorProperties.WebProjectProperties.IISUrl.Trim(), '/', $serviceFile); 

$namespace = ""; 
# Read the namespace for the proxy from the proxy C# file 
Get-Content $outCSFile | ForEach-Object { if ($_ -match "^\s*namespace\s+([A-Za-z._]+)\s+{\s*$") { $namespace = $matches[1] }}; 

$wsdlUrl = [string]::Concat("$serviceWsdlUrl", '?wsdl'); 

# Regenerate the proxy using WSDL.exe 
wsdl.exe /fields "/l:CS" "/n:$namespace" "/out:$outCSFile" "/urlkey:TestEndpoint" "$wsdlUrl"; 

# Update the generated C# file so the proxy class interits from WSE2 base class. 
(Get-Content $outCSFile) | 
ForEach-Object { $_ -replace "\s+\:\s+System\.Web\.Services\.Protocols\.SoapHttpClientProtocol", " : Microsoft.Web.Services2.WebServicesClientProtocol" } | 
Set-Content $outCSFile ; 

$projectDirectory = [IO.Path]::GetDirectoryName($outCSFile); 


$appConfigFilePath = [IO.Path]::Combine($projectDirectory, "App.config"); 

(Get-Content $appConfigFilePath) | 
ForEach-Object { $_ -replace '<add\s+key="TestEndpoint"\s+value="[^"]*"\s+/>', "<add key=""TestEndpoint"" value=""$serviceWsdlUrl"" />" } | 
Set-Content $appConfigFilePath ; 

回答

0

WSDL.EXE不在路徑中。在我的電腦上,它帶有視覺工作室。

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\wsdl.exe