2009-08-21 5 views
2

Пользователи не могут установить приложение ClickOnce. Ошибка: «Файл NLog.dll не является допустимым файлом Portable Executable (PE)». Он отлично работает на моей машине, но у меня установлен nLog. Это невозможно для клиентских машин. Любые идеи, как заставить это работать?Развертывание NLog с помощью приложения ClickOnce

ответ

2

Если ваши сборки NLog развернуты в GAC, вы не можете (просто) включить это в настройку ClickOnce. Попробуйте развернуть их как локальные библиотеки DLL. Если это невозможно, вам понадобится отдельная программа установки (или MSI) для развертывания NLog.

+0

Чтобы продолжить ответ Хенка, в установке nlog должна содержаться не-GACed dll где-нибудь, которую вы можете использовать, или вы можете загрузить ее со своего сайта (часто в zip-файле, а не в установщик). –

+1

Мы также используем NLog без проблем (слишком много), но наши DLL развертываются локально с приложением. – Newtopian

3

Проверьте свой вариант сборки и убедитесь, что NLog.dll включен в «Файлы приложений», чтобы он находился в «группе загрузки»/требуется.

+0

Это, скорее всего, проблема, поскольку NLog должен быть просто другой dll, которую вы можете включить. Log4Net работает таким образом. –

+0

Спасибо, но dll действительно загрузится, это просто дает ошибку. – Brian

0

Добавьте dll в свой проект и установите BuildAction = None и «скопируйте в выходной каталог» как «не копировать».

Удалить свою ссылку на NLog в своем проекте. Повторно добавьте ссылку и укажите ее в DLL, добавленную в проект. В свойствах ссылки установите для параметра «Копировать локальное» значение «true».

Теперь, когда вы запустите приложение, оно укажет на локальную версию, а при развертывании приложения оно развернет локальную версию и укажет на нее.

Это работает для многих сторонних DLL, но не для всех. Лучше всего попробовать это.

+0

Спасибо, но DLL действительно загружается, она просто дает ошибку. – Brian

+0

Как это указано в вашем проекте? Мне нужно будет помять память, я что-то помню о переносимой ошибке выполнения ... Вы изменили свой проект, чтобы ссылаться на него так, как я сказал здесь? – RobinDotNet

+0

Вот сообщение с форума MSDN - посмотрите, поможет ли это вам вообще: http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/dc47dac1-6eb2-4533-a119-c1d87a36c4a5/ – RobinDotNet

7

Я поместил все данные конфигурации NLog в файл App.config вместо файла NLog.config, и он работал для меня после развертывания с помощью ClickOnce. На развернутое приложение не было ошибок и ведение журнала.

+0

Работает для меня тоже. – Pat

8

Я нашел ответ на этот вопрос, когда ваш NLog.config не будет скопирован в вашу программу, если он установлен с использованием ClickOnce.

Вы должны выбрать файл NLog.config в вашем Project с помощью Solution Explorer и установите его Properties следующим образом:

  • Сложение Действие: Содержание
  • Копировать в выходной каталог: Копировать всегда

Теперь при развертывании с использованием ClickOnce файлы должны быть b e скопировал также! :)

Смежные вопросы