Как повторно использовать все типы сборок в svcutil и указать тип коллекции справочника?


Я пытаюсь создать ссылку на службу моего решения через командную строку, поэтому я пытался сделать это с помощью svcutil. У меня есть две проблемы.

  1. В Visual Studio 2012 я могу указать тип коллекции системы.Массив и тип набора словарей системы.Коллекции.Родовой.Словарь. В svcutil есть только опция collectionType, как я могу указать оба типа коллекций?

  2. В Visual Studio 2012 я могу повторно использовать типы в связанная сборка. Затем я могу выбрать, чтобы повторно использовать типы во всех ссылочных сборках. Есть ли способ поручить svcutil повторно использовать все типы из решения или даже способ для меня перечислить несколько сборок, из которых можно повторно использовать типы?

Дополнительные детали: мой проект-silverlight. У меня много сборок, и я не уверен, какие типы используются повторно и где. Типы словарей преобразуются в словарь, а все остальные типы коллекций преобразуются в Система.Массив.

Вот моя текущая попытка воспроизвести мою ссылку.cs-файл, использующий командную строку вместо Visual Studio 2012:

SvcUtil.exe /target:code "myMexServiceAddress" /language:cs /out:Reference.cs /noConfig /async /collectionType:System.Array /serializable /serializer:Auto /enableDataBinding /namespace:*,myNamespace

правка: в настоящее время я успешно генерирую свои ссылки на службы через Visual Studio 2012, но мне нужно иметь возможность генерировать их через командную строку. Вот тут-то мне и не удается этого сделать.

UPDATE1: Итак, я решил проблему 2. Вам просто нужно добавить /r: assembly.библиотеки DLL /Р:ассамблеи2.библиотеки DLL /Р:ассамблея3.DLL в svcutil для повторного использования типов в этих сборках. Немного раздражает необходимость вручную добавлять путь ко всем сборкам, которые вы хотите, но нет способа автоматически использовать все типы из ссылок проекта, как в Visual Studio.

UPDATE2: для создания ссылок на службу Silverlight 5 и ссылки на службу Portable Library в коде необходимо использовать SLSvcUtil.exe вместо SvcUtil.exe как таковой:

SLSvcUtil.exe "myMexServiceAddress" /out:Reference.cs /language:cs /enableDataBinding /namespace:*,myNamespace /serializer:Auto /config:ServiceReference.config

Я до сих пор не знаю, как можно указать два типа коллекций, одна для словарей и одна для других типов коллекций. Есть идеи?

1 3

1 ответ:

1) Командная строка поддерживает создание только одного типа коллекций, однако вы можете настроить свой веб-сервис с помощью диалогового окна Visual Studio Add Servcie Refenerence. Это расширенная панель поддерживает выбор CollectionType и DictionaryType.

2) при выборе этого параметра в Visual Studio он просматривает все сборки, на которые уже ссылается проект, в который вы добавляете ссылку на службу. Если добавить эти ссылки перед запуском мастера добавления ссылок на службы Visual Студия должна их забрать.

Если все остальное не удается, вы можете вручную отредактировать .файл svcmap, который генерирует Visual Studio. Здесь вы можете добавить дополнительные типы коллекций, которые вы хотите использовать (повторно), это могут быть пользовательские типы коллекций, Вы можете добавить дополнительные ссылочные сборки также через этот файл.