Установка извлекает сборку из: C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework.NETFramework \ v4.7.2 \ Facades \ System.ValueTuple.dll
КакиеКстати, вы ссылаетесь на этот пакет? Я могу воспроизвести эту проблему только при добавлении ссылки вручную (щелкните правой кнопкой мыши проект => Добавить ссылку => Обзор ...) Если вы делаете это, удалите эту ссылку и добавьте эту ссылку обратно NugetПользовательский интерфейс диспетчера пакетов .
Мое приложение предназначено для платформы 4.7.2. Типичным примером является System.ValueTuple.dll (4.0.2). Когда я обновляю пакет nuget до версии 4.6 (и сборки до 4.0.3)
, я могу найти его только с последней версией 4.5.0 . И я думаю, что он содержит версию сборки 4.0.3 вместо 4.0.2.
(Полагаю, что-то портит процесс, когда VS распознает вашу версию сборки, потому что на большинстве машин он отображает 4.0.3, а на одной машине - 4.0.2, что довольно странно ...)
Сборка после обновления пакета Nuget продолжает извлекать пакеты из правильной папки \ lib, и приложение работает нормально. Поэтому я хочу, чтобы установщик работал последовательно со сборкой. Любой совет?
Причина проблемы:
Это странное поведение может иметь отношение к проекту установки. Я могу воспроизвести ту же ситуацию, и обнаружил, что эта проблема возникает, только когда я использую формат PackageReference
для управления пакетами nuget в своем приложении. (. Net 4.7.2)
PackageReference
формат - это новое управление пакетами nugetформат после VS2017. Я не уверен, что проект установки полностью поддерживает его.
Вот два предложения, которые могут помочь:
1 . Я обнаружил, что эта проблема возникает только при использовании формата PackageReference
. Таким образом, вы можете попробовать использовать формат Packages.config
в вашем приложении. И я проверил, что проект установки хорошо распознает этот формат.
Удалите все пакеты формата PackageReference и перейдите на Tools=>Nuget Packages Manager=>Nuget Package Manager
, чтобы установить для Allow format selection...
значение true.
Clean all nuget cache
инажмите ok
. После этого удалите папки bin и obj, затем перезапустите VS, чтобы добавить эти пакеты обратно в формате Packages.config
.
2 . Если вы продолжаете использовать формат PackageReference
. Попробуйте исключить сборку из папки ref и вручную добавить ее из папки lib с помощью Add=>Assembly=>Browse
.
Примечание. Поскольку проект установки может не полностью поддерживатьПроекты формата packageReference, на самом деле, я думаю, # 1 может быть более подходящим для вашей ситуации. И вы можете создать новый простой проект в формате packages.config, чтобы проверить, можно ли решить проблему с помощью формата Packages.config. Надеюсь, это поможет:)