该文件不是有效的 VSIX 包

Posted

技术标签:

【中文标题】该文件不是有效的 VSIX 包【英文标题】:The file is not a valid VSIX package 【发布时间】:2017-03-19 20:06:50 【问题描述】:

安装 Visual Studio 2017 后,我可以在这个 Vs 包上工作一个月左右,直到第一次更新。现在,在我重建此 Visual Studio 包,然后尝试安装 VSIX 后,我收到一条消息,指出它是“无效的 VSIX 包”。

任何帮助或指点将不胜感激......

编辑:

日志显示:

找不到名为“?”的入口点在 DLL 'PkgdefMgmt.dll'中

19/03/2017 10:16:02 PM - Microsoft VSIX 安装程序 19/03/2017 10:16:02 下午 - -------------------------------------------- 2017 年 3 月 19 日10:16:02 下午 - vsixinstaller.exe 版本:19/03/2017 10:16:02 PM - 15.0.26228.9 建造者:D15RTWSVC 19/03/2017 10:16:02 PM - ------------------------------------------------------- 19/03/2017 10: 16:02 PM - 命令行参数:19/03/2017 10:16:02 PM - C:\Program Files (x86)\微软视觉 Studio\2017\Enterprise\Common7\IDE\VSIXInstaller.exe,C:\Service\BSToolsProject_3\Tools\ProductivityTools\Bin (场景引擎)\Capitec.ScenarioEngineExtension.vsix 19/03/2017 晚上 10 点 16 分 2 秒 - -------------------------------------------------------- 2017 年 3 月 19 日 晚上 10:16:02 - Microsoft VSIX 安装程序 19/03/2017 晚上 10:16:02 - ------------------------------------------------------- 19/03/2017 10: 16:02 PM - 无法初始化独立 Shell C:\Program Files 的设置 (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\ssms.exe: 找不到名为“?”的入口点在 DLL 'PkgdefMgmt.dll' 中。 2017 年 3 月 19 日晚上 10:16:02 - 无法初始化隔离的设置 外壳 C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\ssms.exe:找不到 名为“?”的入口点在 DLL 'PkgdefMgmt.dll' 中。 19/03/2017 晚上 10:16:02 - 初始化安装... 2017 年 3 月 19 日晚上 10:16:02 - Microsoft.VisualStudio.ExtensionManager.InvalidExtensionPackageException: 。在 Microsoft.VisualStudio.ExtensionManager.InstallableExtensionImpl.ReadVSIXManifestFromPackage(流 流,CultureInfo 首选文化)在 Microsoft.VisualStudio.ExtensionManager.InstallableExtensionImpl..ctor(字符串 路径,CultureInfo 首选文化)在 Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.CreateInstallableExtension(字符串 extensionPath,CultureInfo 首选文化)在 Microsoft.VisualStudio.ExtensionManager.ExtensionEngineImpl.CreateInstallableExtension(字符串 extensionPath) 在 VSIXInstaller.App.GetInstallableData(String vsixPath,布尔 isRepairSupported,IEnumerable1& skuData) at VSIXInstaller.App.Initialize(Boolean isRepairSupported) at VSIXInstaller.App.Initialize() at System.Threading.Tasks.Task1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute()

【问题讨论】:

【参考方案1】:

检查 VSIX 文件是否包含使其成为 VSIX v3 文件所需的文件:

extension.vsixmanifest 清单.json 目录.json

并且 extension.vsixmanifest 文件包含先决条件部分

https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-migrate-extensibility-projects-to-visual-studio-2017

【讨论】:

我尝试按照本指南进行操作,但是在添加 nuget 包并在 csproj 中设置属性后,VSIX 仍然被 VS2017 拒绝... 随意分享 VSIX 我正在尝试构建 Git 扩展来支持 VS2017。你可以在这里找到我的拉取请求:github.com/gitextensions/gitextensions/pull/3439 我在 pr 中添加了几个 cmets - 也没有看到正在使用的构建工具块包的 vsix 版本? 对于未来的读者 - 当您使用 VS 2015/msbuild 14 构建 v3 VISX 时可能会发生这种情况。但是,对 csproj/命令行的修改可以使这成为可能【参考方案2】:

(适用于 VS 2015)

对我来说问题是部分

<Prerequisites>
    <Prerequisite Id="Microsoft.VisualStudio.Shell.12.0" Version="[12.0]" />
</Prerequisites>

在“source.extension.vsixmanifest”文件中。

删除这些行后,VSIX 文件开始工作。

【讨论】:

以上是关于该文件不是有效的 VSIX 包的主要内容,如果未能解决你的问题,请参考以下文章

VS2017 VSIX 安装程序安装失败

VisualStudioAddIn2017.vsix的下载安装和使用

vue3+ts ts插件安装

VSIX项目,添加右键菜单

VSIX 插件右键菜单

不是有效的win32应用程序怎么办