Как избежать ошибки при загрузке Microsoft.VisualStudio.Threading в Visual Studio 2017 - PullRequest
0 голосов
/ 06 ноября 2019

Я сделал журнал обновлений для моего пакета Visual Studio в версии, предназначенной только для Visual Studio 2019. Одно изменение, которое я начал использовать с пакетом NuGet Microsoft.VisualStudio.SDK , версия 16.0.202и удалил множество отдельных ссылок на библиотеки DLL.

Теперь я перенес последнюю версию своего пакета обратно в Visual Studio 2017 и понизил несколько пакетов NuGet (например, Microsoft.CodeAnalysis) до более старых версий.

Я понизил версию Microsoft.VisualStudio.SDK до версии 15.9.3, которая является самой старой доступной версией.

Изначально это работало на нескольких системах. Однако в одной системе мой пакет не загружен, и сообщение записывается в журнал активности, что-то вроде

Could not load file or assembly 'Microsoft.VisualStudio.Threading, Version=15.8.0.0

(сообщение фактически на немецком языке, но это эквивалентное сообщение на английском языке.)

Я вижу два возможных решения:

[1]
Удалите Microsoft.VisualStudio.SDK и вернитесь к ссылкам на множество отдельных DLL.

Я бы предпочелне делать этого.

[2]
Увеличьте минимально необходимый номер версии Visual Studio.

При использовании Microsoft.VisualStudio.SDK версии 15.9.3, мне нужно будет установитьминимальная версия Visual Studio до 15.9.3?

(Это было бы ограничительно, но лучше, чем пакет, который не загружается.)

1 Ответ

1 голос
/ 06 ноября 2019

Необходимо увеличить минимально требуемую версию VS.

1.For packageReference формат, если один проект ссылается на пакет Microsoft.VisualStudio.SDK, этот проект фактически зависитдля пакетов nuget Microsoft.VisualStudio.SDK зависит от. Мы называем их зависимостями пакета nuget .

2. И для пакета Microsoft.VisualStudio.SDK с версией 15.9.3, это также зависит от пакета Microsoft.VisualStudio.Threading. (По крайней мере, 15.8.132, по умолчанию nuget загрузит 15.8.132)

Таким образом, ваш проект расширения на самом деле зависит от Microsoft.VisualStudio.Threading.dll 15.8.0.0.

3. И для Microsoft.VisualStudio.Threading.dll по пути C:\Program Files (x86)\Microsoft Visual Studio\2017\xxx\Common7\IDE\PrivateAssemblies, для VS2017-15.9.16, его версия 15.8.0.0. Для VS2017-15.0.0 его версия - 15.0.0.0.

Тогда, если у меня VS2017-15.6.x, у меня может быть Microsoft.VisualStudio.Threading.dll, чья версия в этой области [15.0.0.0,15.8.0.0). Если мы установим расширение, которое зависит от этой сборки с версией 15.8.0.0, в более старую версию, чем 15.8.x, мы столкнемся с подобной проблемой.

Я вижу два возможных решения

Я думаю, что ваш пользователь может быть в аналогичной ситуации с более старой версией. И если он обновит vs2017-15.9.17 до последней версии, эта проблема исчезнет. И да, если вы используете Microsoft.VisualStudio.SDK версию 15.9.3, установите минимальную версию Visual Studio на 15.9.3.

Вы можете проверить зависимости там:

enter image description here

Этот пакет также зависит от пакетов с версиями 15.9.2x и даже 15.9.3. Чтобы избежать подобных проблем, таких как Could not load file or assembly 'xxx, Version=15.9.0.0, рекомендуется увеличить минимальное требование, чтобы версия VS соответствовала версии VS SDK. (В VS с версией 15.9.0 мы можем не встретить проблему, например, не можем загрузить xxx с 15.8.0.0, но мы можем столкнуться с проблемой, например, не могу загрузить xxx с 15.9.2.0) *

Надеюсь, это поможет:)

...