WedX - журнал о программировании и компьютерных науках

C#, служба Windows и Microsoft.Bcl.Async

Я создаю службу Windows С#, используя пакет Microsoft.Bcl.Async от Nuget.

Все собирается нормально, но когда я пытаюсь установить его на машину (XP или Win7‹ — только с .NET 4.0), я получаю ошибку 1001. Это использует InstallUtil ИЛИ InstallShield 2013 LE с классом установщика.

Я включил ведение журнала Fusion, и это та часть, где он не работает:

*** Assembly Binder Log Entry  (5/1/2014 @ 1:23:13 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = someuser
LOG: DisplayName = System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = InstallUtil.exe
Calling assembly : Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: The same bind was seen before, and was failed with hr = 0x80070002.
ERR: Unrecoverable error occurred during pre-download check (hr = 0x80070002).

Я даже пытался создать службу с нуля и сразу же установить Microsoft.Bcl.Async, чтобы получить тот же результат.

Я не ссылался на другую версию System.Threading.Tasks. Он находится в каталоге bin для моего сервиса. Я рыскал в течение нескольких дней, пытаясь понять это, и я в недоумении.

EDIT: Любопытно, что я могу удалить все ключевые слова «async» и «await» из своего проекта и теперь использовать любые асинхронные расширения, такие как «StreamWriter.WriteLineAsync(); и оставьте в проекте ссылки на Microsoft.Bcl.Async, и служба установится нормально. Как только я пытаюсь использовать «асинхронный» или «ожидающий» в своем коде, я начинаю испытывать эти проблемы.


  • Проблема только в установщике? То есть, нормально ли работает служба на той же машине, если вы регистрируете ее вручную? 02.05.2014
  • Насколько я знаю, InstallUtil.exe — это способ зарегистрировать службу .NET Windows. InstallUtil выдает эту ошибку, как и ISLE, потому что он использует InstallUtil для регистрации службы. Я могу нормально установить на свой ящик для разработки, и если я установлю .NET 4.5.1 на машину с Windows 7, он также будет установлен нормально. 02.05.2014
  • Посмотрите, поможет ли это сообщение, просто замените RegAsm.exe на InstallUtil.exe. 02.05.2014
  • @Noseratio, это сработало для InstallUtil.exe! После этого я попытался сделать это с помощью моей установки, созданной InstallShield, и это не удалось. FusionLogs показывает, что msiexec.exe все еще ищет System.Threading.Tasks версии 1.5.11.0. 02.05.2014
  • Затем проголосуйте за исправление эта ошибка. 02.05.2014
  • Сделаю. Тем временем я обнаружил, что Installshield 2013 LE разблокировал базовый вариант установки службы, поэтому вам не нужно использовать класс установщика в службе Windows для ее установки. Я ценю всю помощь. :) 02.05.2014

Ответы:


1

Попробуйте найти ответ в этой ссылке на блог bcl. Думаю, проблема 6 на этой странице то, что вы ищете.

01.05.2014
  • К сожалению, я был в этом блоге и пробовал выпуск 6, 7, 8 и 9. Я только что снова попытался выполнить выпуск 6 в моей новой сборке проекта службы и получил ту же ошибку. 02.05.2014
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]