2015-11-04 7 views
0

Так что я полностью пошатнулся этим. Раньше применялись точно такие же методы, но на этот раз у меня есть единственная сборка, на которую ссылается из каталога nuget packages -directory, имеет локальный набор для копирования в true и является сильной ссылкой на имя.ClickOnce развертывание и дублированная зависимость -entry

Если я затем запускаю публикацию из VS на моей машине dev, манифест генерируется правильно. Однако, когда я запускаю его на машине сборки, по какой-то необъяснимой причине манифест содержит записи повторяющихся зависимостей для одной и той же сборки, одна из которых точно такая же, как на моей собственной машине, НО другая имеет dependencyType="preRequisite и еще больше загадочно ссылается на совершенно другую версию сборки, которая используется абсолютно без-где (я просмотрел свой файл .csproj миллион раз и ничего не могу найти).

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

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

И, наконец, в другом проекте у меня есть точно такая же ссылка на сборку, и она работает так, как ожидалось. Что это может сделать?

ответ

0

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

(довольно грязное) исправление заключалось в том, чтобы просто найти повреждающий файл из установочного каталога и удалить его. Я до сих пор не знаю, почему это произошло только в этой DLL, а не с другими сторонними DLL.