Как избавиться от сообщения об ошибке «Целевая сборка не содержит типы служб» в VS2008? - PullRequest
68 голосов
/ 19 февраля 2009

У меня клиент-серверное приложение wcf

Мой исполняемый файл не определяет ServiceContract, он даже не имеет ссылки на System.ServiceModel (, но вместо этого имеет ссылку на сборку, которая содержит логику соединения с сервером )

У меня есть другая сборка, на которую ссылается мой EXE, который содержит ServiceContract.

Раньше работал нормально. Вчера я много играл с настройками своего проекта ( частичное доверие, полное доверие, настройки развертывания и т. Д. ), и теперь, каждый раз, когда я запускаю свой клиент, у меня появляется следующее окно сообщения:

Сервисный узел Microsoft WCF
В целевой сборке нет типов сервисов.
Возможно, вам придется настроить политику безопасности доступа к коду этой сборки.

Затем VS останавливается на 1 минуту и, в конце концов, позволяет отлаживать мою программу как обычно.

Я нашел пост по этой проблеме , но решение не применимо в моей ситуации. Есть идеи?

Ответы [ 8 ]

117 голосов
/ 19 февраля 2009

Это всегда так. Вы ищете в течение 2 часов, вы в конечном итоге публикуете сообщения на SO, а через 5 минут вы найдете ответ.

На вкладке Параметры WCF свойств проекта, определяющих ServiceContract, есть флажок "Запускать узел службы WCF при отладке другого проекта в том же решении", который я снял.

Понятия не имею, как это было проверено.

В любом случае, это решило мою проблему. Сведения о настройке этого проекта см. В справочнике MSDN .

11 голосов
/ 23 октября 2014

На всякий случай, если кто-то еще ищет ответ, другой причиной этой ошибки может быть случай, если у вас есть файл App.config в проекте, который является библиотекой классов с разделом <system.serviceModel>.

Я переместил служебный код из проекта, который был исполняемым файлом в другой проект, но случайно оставил старый файл App.config. Мой новый проект, который представлял собой консольное приложение, запрограммировано настроенное и запустило WCF, но поскольку старый файл App.config находился в указанной сборке, я получал это загадочное диалоговое окно даже при отладке консольного приложения.

Потребовалось около 12 часов, чтобы отследить это, поскольку я не осознавал, что отладчик VS проверяет все ссылочные сборки на предмет App.config, для которых настроены службы WCF.

7 голосов
/ 02 апреля 2012

Чтобы определить проект с этой проблемой, найдите в файлах проекта строку 3D9AD99F-2412-4246-B90B-4EAA41C64699.

Пример: <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Затем отключите опцию проекта "Параметры WCF / Запуск хоста службы WCF при отладке другого проекта в том же решении"

4 голосов
/ 22 мая 2014

Некоторые блоги говорят, что это могло произойти из-за копирования проекта из другой ветки, которая переопределяет GUID ... поэтому просто удалите их, как описано в этом блоге.

1 голос
/ 19 июля 2017

Старая тема. Просто удалите все аргументы командной строки из раздела Debug в Options. Это помогло мне.

1 голос
/ 17 сентября 2016

Эта ошибка также может быть вызвана неправильным именем службы в вашем конфигурационном файле:

<system.serviceModel>
    <services>
      <service name="MyServiceLibrary.WrongServiceName">
...

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

1 голос
/ 04 января 2013

Я также столкнулся с такой же проблемой и искал часы, чтобы избавиться от этой конкретной ошибки. Наконец я нашел выход из этого.

Когда вы сталкиваетесь с этой конкретной проблемой, вы пытаетесь запустить ваше серверное и клиентское приложение как администратор и изменить свойства WPF проекта.

Когда вы щелкнете свойства проекта в WPF, вы найдете опцию сборки. В опции сборки есть опция с именем ПЛАТФОРМА TARGET , в которой вы можете изменить цель платформы на x86 . Также обратите внимание, что в случае x84 вам необходимо установить значение x84 .

Теперь запустите ваш проект из консоли , т.е. перейдите в папку, в которой сохранены ваши проекты, и в корзине клиента вы найдете папку debug , в которой вы получит ваше консольное приложение . Теперь вы сможете успешно запустить приложение.

0 голосов
/ 19 марта 2018

Добавление другого решения, так как это сообщение имеет несколько причин. Удаление следующего GUID из тега ProjectTypeGuids в файле проекта решило проблему.

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...