Как я могу избавиться от сообщения об ошибке "Целевая сборка не содержит типов услуг" в VS2008?

У меня есть приложение wcf Client/Server

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

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

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

Microsoft WCF Service Host
 Целевая сборка не содержит типов услуг.
 Возможно, вам придется настроить политику безопасности доступа к коду этой сборки.

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

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

Ответ 1

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

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

Я не знаю, как это было проверено в первую очередь.

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>

Ответ 9

Отличная работа Отруби:

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