방법: Svcutil.exe를 사용하여 컴파일된 서비스 코드에서 메타데이터 내보내기
Svcutil.exe에서는 다음과 같이 컴파일된 어셈블리에 있는 서비스, 계약 및 데이터 형식에 대한 메타데이터를 내보낼 수 있습니다.
Svcutil.exe를 사용하는 어셈블리 집합의 컴파일된 모든 서비스 계약에 대한 메타데이터를 내보내려면 어셈블리를 입력 매개 변수로 지정합니다. 이 옵션은 기본 동작입니다.
Svcutil.exe를 사용하는 컴파일된 서비스에 대한 메타데이터를 내보내려면 서비스 어셈블리 또는 어셈블리를 입력 매개 변수로 지정합니다. 내보낼 서비스의 구성 이름을 나타내려면
/serviceName
옵션을 사용해야 합니다. Svcutil.exe에서는 지정된 실행 가능한 어셈블리에 대한 구성 파일을 자동으로 로드합니다.어셈블리 집합 내의 모든 데이터 계약 형식을 내보내려면
/dataContractOnly
옵션을 사용합니다.
참고 항목
종속 어셈블리의 파일 경로를 지정하려면 /reference
옵션을 사용합니다.
컴파일된 서비스 계약에 대한 메타데이터를 내보내려면
서비스 계약 구현을 하나 이상의 클래스 라이브러리로 컴파일합니다.
Svcutil.exe를 컴파일된 어셈블리에서 실행합니다.
참고 항목
종속 어셈블리의 파일 경로를 지정하려면
/reference
스위치를 사용해야 할 수 있습니다.svcutil.exe Contracts.dll
컴파일된 서비스에 대한 메타데이터를 내보내려면
서비스 구현을 실행 가능한 어셈블리로 컴파일합니다.
서비스 실행 파일의 구성 파일을 만들고 서비스 구성을 추가합니다.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="MyService" > <endpoint address="finder" contract="IPeopleFinder" binding="wsHttpBinding" /> </service> </services> </system.serviceModel> </configuration>
서비스의 구성 이름을 지정하려면
/serviceName
스위치를 사용하여 Svcutil.exe를 컴파일된 서비스 실행 파일에서 실행합니다.참고 항목
종속 어셈블리의 파일 경로를 지정하려면
/reference
스위치를 사용해야 할 수 있습니다.svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll
컴파일된 데이터 계약에 대한 메타데이터를 내보내려면
데이터 계약 구현을 하나 이상의 클래스 라이브러리로 컴파일합니다.
데이터 계약의 메타데이터만 생성되어야 함을 지정하려면
/dataContract
스위치를 사용하여 Svcutil.exe를 컴파일된 어셈블리에서 실행합니다.참고 항목
종속 어셈블리의 파일 경로를 지정하려면
/reference
스위치를 사용해야 할 수 있습니다.svcutil.exe /dataContractOnly Contracts.dll
예시
다음 예제에서는 단순 서비스 구현 및 구성에 대한 메타데이터를 생성하는 방법을 보여 줍니다.
서비스 계약에 대한 메타데이터를 내보내려면
svcutil.exe Contracts.dll
데이터 계약에 대한 메타데이터를 내보내려면
svcutil.exe /dataContractOnly Contracts.dll
서비스 구현에 대한 메타데이터를 내보내려면
svcutil.exe /serviceName:MyService Service.exe /reference:<path>/Contracts.dll
<path>
는 Contracts.dll의 경로입니다.
// The following service contract and data contracts are compiled into
// Contracts.dll.
[ServiceContract(ConfigurationName="IPeopleFinder")]
public interface IPersonFinder
{
[OperationContract]
Address GetAddress(Person s);
}
[DataContract]
public class Person
{
[DataMember]
public string firstName;
[DataMember]
public string lastName;
[DataMember]
public int age;
}
[DataContract]
public class Address
{
[DataMember]
public string city;
[DataMember]
public string state;
[DataMember]
public string street;
[DataMember]
public int zipCode;
[DataMember]
public Person person;
}
// The following service implementation is compiled into Service.exe.
// This service uses the contracts specified in Contracts.dll.
[ServiceBehavior(ConfigurationName = "MyService")]
public class MyService : IPersonFinder
{
public Address GetAddress(Person person)
{
Address address = new Address();
address.person = person;
return address;
}
}
<!-- The following is the configuration file for Service.exe. -->
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="MyService">
<endpoint address="finder"
binding="basicHttpBinding"
contract="IPeopleFinder"/>
</service>
</services>
</system.serviceModel>
</configuration>