【一款支持Ollama本地部署的Visual Studio 2022 编程助手插件的编译和生成之路】解决打包安装问题

【一款支持Ollama本地部署的Visual Studio 2022 编程助手插件的编译和生成之路】解决打包安装问题

前言:

真的是,又通宵了。都40岁的人了,这样熬夜真的不好。哎,又是天亮了给大家写一篇避坑小短文。希望别人可以因为这个文章少一点熬夜咯。希望帮到你。

我的痛点:

由于最近出了很多很强的大模型(例如GLM-4.7-flash)。现在非常的喜欢用本地的显卡来运行这些大模型(显存大于48G)。这样可以避免申请各种API和充值。由于原来的项目是用Visual Studio 2017以及Visual Studio 2022 开发的。现在想对这个旧的项目进行升级。那么就想在Visual Studio 2022 上面运行一个支持本地Ollama大语言服务器的编程助手。结果找了一圈最好用的可能是通义推出的TONGYI Lingma 2022这个产品。但是这款产品只支持API调用,而且是2022款,最不符合我的是不支持本地的ollama模型调用。也考虑了"Cody for Visual Studio",可是这款产品需要先登录它的官网,又需要注册一顿,每次进入可能还需要登录。查了一下,无法使用VS Code提供的各种开源扩展,于是找了很多个开源的项目。在Github中选中了其中一个,感觉比较新的OllamaCodeAssistant,地址是:https://github.com/shogunxam/OllamaCodeAssistant。然后下载了源码想进行本地编译。(因为这个项目没有在市场上面发布,所以只能在本地编译。) 下载了之后。也对 Visual Studio 2022进行了各种升级和包的调整。中间发生了一些坑爹的事情,所以现在写下来,防止后人栽跟斗。

需要通过Visual Studio Installer 安装一个组件

组件名为:Visual Studio 扩展开发

根据AI助手给出的安装办法:打开 Visual Studio Installer;选择已安装的 VS 2022,点击「修改」;在「工作负载」标签页中,勾选 "其他工具集" 下的 "Visual Studio 扩展开发";点击右下角「修改」,等待安装完成后重启 VS。

坑1:

疑问:
plaintext 复制代码
"我已经安装了"Visual Studio 扩展开发相关的程序集"了,并且重启了windows系统了,可是打开项目文件,还是表示错误:
using Microsoft.VisualStudio.Language.Intellisense;
using Microsoft.VisualStudio.Language.StandardClassification;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Adornments;
是不是还需要我添加引用?
AI助手回答:
plaintext 复制代码
你已经安装了 VS 扩展开发工作负载,仍报命名空间错误,核心原因是这些命名空间对应的程序集未被项目显式引用------VS 不会自动为项目关联这些扩展开发专属的程序集,必须手动在项目中添加引用,这是解决问题的关键步骤。

结果相信了AI助手(哪个名字我就不点名了),兜了一大圈,浪费多轮对话和时间,无果。(结论:其实根本不是添加引用就可以解决的,请往下阅读)

坑2:

using Microsoft.VisualStudio.Language.Intellisense; 这个编译错误可以用VS 2022自带的错误解决,提示我要下载一些**包,名字太长,忘了,反正你也不需要知道。

疑问:

点击下载,接受条款,等待下载几秒钟,结果没反应。重启VS,无果。重启系统,无果。点击输出,发现回滚了。可能是安装遇到问题。

输出如下:

plantext 复制代码
正在还原 D:\boxsc_repo\OllamaCodeAssistant2026\OllamaCodeAssistant\OllamaCodeAssistant.csproj 的包...
  GET https://api.nuget.org/v3-flatcontainer/microsoft.visualstudio.sdk/index.json
  OK https://api.nuget.org/v3-flatcontainer/microsoft.visualstudio.sdk/index.json 476 毫秒
NU1102: 找不到版本为 (>= 17.14.40270) 的包 Microsoft.VisualStudio.SDK
  - 在 nuget.org 中找到 37 个版本[ 最接近版本: 17.14.40265 ]
  - 在 Microsoft Visual Studio Offline Packages 中找到 0 个版本
  CACHE https://api.nuget.org/v3/vulnerabilities/index.json
  CACHE https://api.nuget.org/v3/vulnerabilities/vulnerability.base.json
  CACHE https://api.nuget.org/v3/vulnerabilities/vulnerability.update.json
程序包还原失败。正在回滚"OllamaCodeAssistant"的程序包更改。
已用时间: 00:00:00.5707597

把输出又丢给AI助手,呵呵呵,希望它能懂我。

AI助手回答:

她还是有两手的,发现了问题的核心:

text 复制代码
一、核心错误根源
NU1102 错误的本质是项目依赖的包版本与 NuGet 源中实际存在的版本不匹配

然后它告诉我,要么@#¥要么¥#@

我的现象图片:

我把版本号下拉,看到需要的版本号:17.14.40270 ---> 17.14.40265

选择了17.14.40265,点击"更新"(虽然是往下更新,但也是"更新"这个按钮)

之后成功切换到265版本咯~~开心。

坑3:也不是严格意义上的坑,还好。

对于上图,你可以看到有2个感叹号。表示有2个包已经非常落后过时。果断点击更新升级。然后看到"Microsoft.Extensions.AI.Ollama"这个包已经弃用。找到新包"OllamaSharp",安装。删除了旧的"Microsoft.Extensions.AI.Ollama"这个包之后。重启一下VS 2022.(稳!)

还要修改一下代码:

找到:LLMInteractionManager.cs这个文件。添加代码:"using OllamaSharp;"以及修改48行代码把"OllamaChatClient"换成"OllamaApiClient"即可。

保存编译整个项目即可。

结束战斗(花费3-4小时,前面1小时安装了CodeGeeX)

结果发现CodeGeeX的版本太老了,没有Agent功能,只能对话。玩了一下就弃用了。

也安装了几个,都不太满意。才决心折腾一下。

告诉AI助手:编译通过,完成。

用她的回答来做个总结吧:

text 复制代码
太棒"了!🎉 项目成功编译通过,意味着之前的VS SDK 版本冲突、NuGet 包弃用、命名空间缺失等问题都已彻底解决,核心依赖和代码适配全部到位了。
核心解决成果回顾
替换了不可用的Microsoft.VisualStudio.SDK 17.14.40270,安装了 NuGet 公网稳定版17.14.40265,解决了 VS 扩展开发核心依赖的包还原与引用问题;
识别并处理了弃用的Microsoft.Extensions.AI.Ollama包,明确了替代方案OllamaSharp,同时确认了Microsoft.Extensions.AI所属的核心抽象包Microsoft.Extensions.AI.Abstractions;
补全了Microsoft.VisualStudio.Language.Intellisense等 VS 扩展开发必备命名空间的程序集引用,结合 VS 扩展开发工作负载,实现了编译无报错。
后续开发小建议
功能调试:先验证 VS 扩展的基础能力(如智能提示、文本解析),再集成OllamaSharp实现 AI 交互,分步调试更高效;
包版本锁定:保持Microsoft.VisualStudio.SDK、Microsoft.Extensions.AI.Abstractions等核心包的版本固定,避免自动升级导致再次出现版本冲突;
Ollama 集成:使用之前提供的OllamaSharp基础示例,先完成「本地 Ollama 服务连接」「基础模型调用」,再扩展到项目的 AI 核心逻辑。

谢谢你的阅读,希望对你有帮助。希望能有一个你的点赞,谢谢~~~!

【追加】经过调试,还是很多错误。现在修正:

代码N多错误,用opencode修改了两轮。

然后手工调试,发现还是有bug,增加了调试信息,输出了错误所在。原来情况解决方案。

请一定要用nuget下载一个"Microsoft.Bcl.AsyncInterfaces"的包,版本为10.0.0,然后重新编译。才可以。

text 复制代码
现在遇到的是程序集缺失异常(并非真的 IO 文件找不到,而是.NET 运行时找不到 Microsoft.Bcl.AsyncInterfaces 这个关键程序集),这是插件项目的依赖包未正确打包 / 部署导致的核心问题 ------OllamaApiClient 依赖 Microsoft.Bcl.AsyncInterfaces 10.0.0.0,但该程序集未被包含在插件输出中,运行时加载失败。
一、核心原因分析
Microsoft.Bcl.AsyncInterfaces 的作用:
这个程序集是.NET 提供的异步接口(如 IAsyncEnumerable<T>)的兼容包,OllamaApiClient 的异步方法(ListLocalModelsAsync)依赖它,你的项目虽然安装了该包,但未将其复制到插件输出目录 / 打包到 VSIX 中,导致运行时找不到。

安装之后,重新编译。然后用VSIX安装即可。

相关推荐
-凌凌漆-2 小时前
vscode运行npm报错,npm : 无法加载文件 xxxxx/npm.ps1,因为在此系统上禁止运行脚本。
ide·vscode·npm
lingzhilab2 小时前
零知IDE——基于ESP32的ADS1115 多通道数据采集系统:从差分测量到Web实时监控
ide
Lxinccode3 小时前
python(70) : 网页IDE
开发语言·ide·python·网页ide
Yupureki3 小时前
《算法竞赛从入门到国奖》算法基础:搜索-BFS初识
c语言·数据结构·c++·算法·visual studio·宽度优先
shishi52115 小时前
trae重装后,无法预览调试弹窗报错的解决方案
ide·计算机视觉·语言模型
小皮每天进步一点点18 小时前
IDEA找不到源码
java·ide·intellij-idea
LCG米19 小时前
开发环境搭建:告别Keil,用CLion+STM32CubeMX打造智能嵌入式IDE
ide·stm32·嵌入式硬件
用户405383693520 小时前
开源语音识别FunASR入门详解
ide·macos·xcode
水饺编程21 小时前
Windows 编程基础:窗口坐标系
c语言·c++·windows·visual studio