WCF ‘sub main’ не найден

#vb.net #wcf #service #host

#vb.net #wcf #Обслуживание #хост

Вопрос:

Должно быть, я схожу с ума…

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

Я создал библиотеку служб WCF, добавил одну функцию. Затем создал службу Windows и добавил мой WCF в проект. Остальные материалы, расположенные здесь (http://joefreeman.co.uk/blog/2010/03/creating-a-setup-project-for-a-windows-wcf-service-with-visual-studio/)

Теперь я получаю сообщение об ошибке «Sub Mian не найден в [приложении WCF]» при попытке создать решение.

Я не думал, что проектам WCF требуется Sub Main, поскольку они являются службами, а не приложениями. Что я делаю не так? В моем последнем проекте у меня не было sub main. Есть идеи?

Ответ №1:

Для других, кто ищет тот же ответ, что и я…

Создал службу в VB.NET (VS2010), и получал ту же ошибку, что указана выше…

 'Sub Main' was not found in 'SERVICENAME.Service1'.
  

В VB.NET VS2010 автоматически создал для меня файл «Service1.Designer.vb». Внутри этого файла было:

     Shared Sub Main()
    Dim ServicesToRun() As System.ServiceProcess.ServiceBase

    ' More than one NT Service may run within the same process. To add
    ' another service to this process, change the following line to
    ' create a second service object. For example,
    '
    '   ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
    '
    ServicesToRun = New System.ServiceProcess.ServiceBase() {New SERVICENAME}

    System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
  

Чтобы устранить эту проблему, щелкните правой кнопкой мыши название вашего решения в обозревателе решений, перейдите на вкладку «Приложение» и выберите «Sub Main» в качестве объекта запуска в раскрывающемся списке «Объект запуска». Перекомпилируйте.

Конечно, имена файлов и структура в C # будут другими, но идея в том, что Visual Studio куда-то поместила основную процедуру, и, надеюсь, она уже должна знать, где она находится.

Ответ №2:

Самой службе WCF не нужен Sub Main, но вашей службе Windows нужен.

Сравните с ранее созданной рабочей службой Windows.

редактировать: используя C #, когда я создаю новый проект с использованием шаблона службы Windows, я получаю следующий исходный код в Program.cs файле ( static void Main это ваш Sub Main ). Я был бы очень удивлен, если у вас также нет этого в вашей службе Windows.

 static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main()
  

Комментарии:

1. Не могу найти разницу между ними. Ни у одного из них нет sub main, оба имеют OnStart и onStop с идентичным кодом (за исключением имени WCF). Сводит меня с ума!

2. Я использую C #, но когда я использую шаблон «новая служба Windows», я получаю Program.cs файл.

3. Что произошло, так это то, что я попытался скопировать свою прежнюю рабочую модель, за исключением того, что я использовал обычный WCF в отличие от веб-WCF, который у меня был в исходной модели. Заметка для себя: они разные! Исправление заключалось в том, чтобы просто скопировать оригинал, переименовать все и отредактировать конфигурационные файлы в соответствии с новыми каталогами. Тем не менее, спасибо за ваши сообщения!

Ответ №3:

Убедитесь, что вы случайно не изменили тип приложения на что-то глупое вроде «приложение Windows forms», нажмите свойства проекта и убедитесь, что он находится в «библиотеке классов».