Как установить Contract-First Tool в VisualStudio 2012

У меня VisualStudio 2012, и я пытаюсь следовать следующему учебнику http://msdn.microsoft.com/en-us/library/hh674270.aspx

Но я не смог найти опцию " Определение схемы" на панели WCF диалога "Шаблоны".

Нужно ли что-то устанавливать? Что бы это было? Возможно, расширение?

Заранее спасибо.

3 ответа

Решение

Вам не нужно устанавливать его - он уже там. Что может вас удивить, так это то, что он доступен только в шаблоне "Библиотека служб WCF".

VS 2012 правильный проект WCF

После добавления файла схемы, как показано:Добавление схемы XML

Затем вы получаете дополнительную опцию в свойствах проекта:

введите описание изображения здесь

Я хочу добавить свои выводы.

Я тоже хотел использовать инструмент Contract-First и не нашел настройки, упомянутой в ссылке msdn.

Однако я узнал, как добавить его к любому типу проекта, так как я хотел, чтобы мои службы, размещенные на iis, сначала также использовали контракт.

Что вы делаете, так это создаете "Библиотеку услуг WCF", как упоминалось выше.

Затем откройте csproj-файл для проекта в текстовом редакторе.

Затем скопируйте и вставьте записи, которые выглядят примерно так, в другой файл проекта.

  <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
    <WcfProjectProperties>
      <AutoStart>True</AutoStart>
    </WcfProjectProperties>
  </FlavorProperties>

Также вам нужно изменить guid:s в целевом проекте на что-то вроде этого:

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

Тег FlavorProperties с его направляющими взят из vs2012 update 3, поэтому он может измениться в будущем.

Таким образом, с помощью этого хака вы можете развернуть контрактные сервисы непосредственно в iis.

Вопрос, однако, в том, почему это не работало так из коробки в visual studio 2012

Вам не нужно добавлять XSD из панели WCF, просто возьмите элемент схемы XML из панели данных.

Если в VS 2012 включен параметр "Включить XSD в качестве языка определения типа", он будет генерировать типы в пространстве имен вашего решения + ".ContractTypes".

Проверьте выходные окна, чтобы увидеть, что делает процесс сборки с XSD.

Другие вопросы по тегам