Я создал файл DLL, который анализирует файл WSDL me и сохраняет его в других файлах. Файл называется WsdlParser.dll. Входные параметры: входной файл, выходной файл, элемент и родительский элемент. Мне нужно создать другую программу, чтобы вызвать эту DLL и ввести данные для MSBuild (мне нужно создать в другой программе для создания этих файлов из WSDL) .Method parser me для создания новых файлов. Я создал проект, где я поставил ссылку Microsoft.Build.Framework, Microsoft.Build.Utulities, WsdlParser.Пользовательская задача MSBuild
namespace MyParserBuild
{
public class ParserClass : Task
{
private string input;
private string output;
private string element;
private string parentElement;
public override bool Execute()
{
try
{
WsdlParser.Parser parse = new WsdlParser.Parser(input, output);
parse.Parse(parentElement, element);
}
catch (Exception e)
{
Console.WriteLine(e);
return false;
}
return true;
}
/* Properties */
[Required]
public string Input
{
get { return input; }
set { input = value; }
}
[Required]
public string Output
{
get { return output; }
set { output = value; }
}
[Required]
public string Element
{
get { return element; }
set { element = value; }
}
[Required]
public string ParentElement
{
get { return parentElement; }
set { parentElement = value; }
}
}
}
И создать XML-файл с именем MyBuild.targets
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="MyParserBuild.ParserClass" AssemblyFile="C:\Work\Common code\MyCode\MyParserBuild\MyParserBuild\bin\Debug\MyParserBuild.dll"/>
<!--Variable-->
<PropertyGroup>
<PG_Input>C:\Work\Common code\MyCode\MyParserBuild\MyParserBuild\MyWSDLFile2.wsdl</PG_Input>
<PG_Output>C:\Users\Administrator\Desktop\test</PG_Output>
<PG_Element>schema</PG_Element>
<PG_ParentElement>types</PG_ParentElement>
</PropertyGroup>
<Target Name="PreBuild">
<ParserClass Input="$(PG_Input)"
Output="$(PG_Output)"
Element="$(PG_Element)"
ParentElement="$(PG_ParentElement)" />
</Target>
</Project>
Наконец, я поставил эту цель в .csproj другую программу.
<Import Project="C:\Work\Common code\MyCode\MyParserBuild\MyParserBuild\MyBuild.targets"/>
Моя проблема заключается в том, что при создании другой программы эти файлы не будут создаваться из WSDL.
Спасибо, я использовал этот первый вариант –