あなたがCommandLineをからネイティブ/レガシー・ツールを使用したいが、ここであなたが行くいけない、なぜ私は、本当に取得いけない:これはSystem.CodeDom
とSystem.CodeDom.Compiler
に依存さ
var wsdlDescription = ServiceDescription.Read(YourWSDLFile);
var wsdlImporter = new ServiceDescriptionImporter();
wsdlImporter.ProtocolName = "Soap12"; //Might differ
wsdlImporter.AddServiceDescription(wsdlDescription, null, null);
wsdlImporter.Style = ServiceDescriptionImportStyle.Server;
wsdlImporter.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;
var codeNamespace = new CodeNamespace();
var codeUnit = new CodeCompileUnit();
codeUnit.Namespaces.Add(codeNamespace);
var importWarning = wsdlImporter.Import(codeNamespace, codeUnit);
if (importWarning == 0) {
var stringBuilder = new StringBuilder();
var stringWriter = new StringWriter(stringBuilder);
var codeProvider = CodeDomProvider.CreateProvider("Vb");
codeProvider.GenerateCodeFromCompileUnit(codeUnit, stringWriter, new CodeGeneratorOptions());
stringWriter.Close();
File.WriteAllText(WhereYouWantYourClass, stringBuilder.ToString(), Encoding.UTF8);
} else {
Console.WriteLine(importWarning);
}
注
CodeDomProvider.CreateProvider("Vb")
をCodeDomProvider.CreateProvider("CSharp")
に置き換えて、c#ファイルを生成することもできます。このC odeは非常に簡単なthis WSDLでテストされています。
'コマンドラインなし'は、他の外部アプリを呼び出さずに、プログラム的に意味しますか? –
'wsdl.exe'を呼び出すと何が問題になりますか? –