Visual studio 2017 如何避免在Visual Studio 2017中加载Microsoft.VisualStudio.Threading时出错

Visual studio 2017 如何避免在Visual Studio 2017中加载Microsoft.VisualStudio.Threading时出错,visual-studio-2017,visual-studio-extensions,visual-studio-sdk,Visual Studio 2017,Visual Studio Extensions,Visual Studio Sdk,我已在仅针对Visual Studio 2019的版本中记录了对Visual Studio包的更新。我开始使用NuGet软件包Microsoft.VisualStudio.SDK(版本16.0.202)进行的一项更改,删除了许多对DLL的单独引用 现在,我已经将最新版本的软件包移植回Visual Studio 2017,并将几个NuGet软件包(例如Microsoft.CodeAnalysis)降级为旧版本 我已将Microsoft.VisualStudio.SDK降级为15.9.3版,这是最旧

我已在仅针对Visual Studio 2019的版本中记录了对Visual Studio包的更新。我开始使用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


(这将是限制性的,但比不加载的包要好。)

有必要增加所需的最小VS版本。

1.对于格式,如果一个项目引用了
Microsoft.VisualStudio.SDK
包,那么该项目实际上依赖于
Microsoft.VisualStudio.SDK
所依赖的nuget包。我们叫他们

2.对于版本为
15.9.3
的软件包,它还依赖于
Microsoft.VisualStudio.Threading
软件包。(默认情况下,nuget将下载至少15.8.132)

因此,您的扩展项目实际上依赖于Microsoft.VisualStudio.Threading.dll 15.8.0.0

3.对于路径
C:\Program Files(x86)\Microsoft Visual Studio\2017\xxx\Common7\IDE\PrivateSassemblies
下的
Microsoft.VisualStudio.Threading.dll
,对于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,15.8.0.0]。如果我们将依赖于版本为15.8.0.0的程序集的扩展安装到比15.8.x更旧的vs版本中,我们将遇到类似的问题

我可以看到两种可能的解决办法

我认为您的用户在使用较旧的vs版本时可能会遇到类似情况。如果他将vs更新到最新的vs2017-15.9.17,此问题将消失。是的,如果您使用
Microsoft.VisualStudio.SDK
15.9.3版,请将Visual Studio的最低版本设置为15.9.3

您可以在此处检查依赖项:

此软件包还依赖于15.9.2x甚至15.9.3版本的软件包。为避免遇到类似问题,如
无法加载文件或程序集xxx,Version=15.9.0.0
,建议增加使VS版本与VS SDK版本一致的最低要求。(在版本为15.9.0的VS中,我们可能不会遇到无法使用15.8.0.0加载xxx的问题,但我们可能会遇到无法使用15.9.2.0加载xxx的问题)


希望有帮助:)

15.8.0.0是VS2019的专用程序集,存储在C:\Program Files(x86)中\我的计算机上有Microsoft Visual Studio\2019\Community\Common7\IDE\PrivateAssemblys。VS2017使用15.5.0.0,类似的路径。这些私有程序集应该如何被引用并跨VS版本工作肯定不是很明显。我也有该版本,但2017年我在同一目录中也有一个版本。但是,我已在我的计算机上将Visual Studio 2017更新为版本15.9.16。我猜特定用户没有这样的新更新。我发现我正在引用版本16.2.3073的Microsoft.VSSDK.BuildTools包和版本16.3.13的Microsoft.VisualStudio.Threading.Analyzers包。任何以16开头的版本都可能是tVS2017新增了oo。我将尝试降级这两个软件包。对,我没有。我放弃了在VS2017版本15.5.6上追逐敏捷弹跳球。很痛苦,不是吗。谢谢。修改Microsoft.VSSDK.BuildTools和Microsoft.VisualStudio.Threading.Analyzers的版本不会提供快速修复。短期内,我已经提高了最低版本所需版本。感谢Lance,我将把最低要求更新到VS 15.9.3。我还将尝试在不使用Nuget软件包Microsoft.VisualStudio.SDK的情况下制作一个版本(尽管这确实让生活变得更轻松)以支持旧版本。