【问题标题】:IlMerge Visual Studio extension vsixIlMerge Visual Studio 扩展 vsix
【发布时间】:2018-08-16 13:09:51
【问题描述】:

我的 Visual Studio 扩展中的依赖项存在一些问题。解决方案之一是将我所有的 dll 合并到一个 dll 中。我想出了一个解决方案来创建一个自定义 msbuild 任务,该任务将在 AfterBuild 事件中运行(在创建 vsix 之后)。这就是任务的作用:

 1. Unzip .vsix content.
 2. Find all dlls and merge them into a single one.
 3. Replaces all dlls with merged.dll in vsix.

问题是 dll 列在 manifest.json 和 extension.manifest 中,当我尝试安装 vsix 时,它抱怨它没有找到所需的 dll。我还需要以某种方式将 merge.dll 添加到 manifest.json 中。

这似乎是常见问题,但我找不到此类问题的正确解决方案。任何解决此问题或以不同方式解决此问题的想法都将不胜感激

【问题讨论】:

    标签: c# msbuild visual-studio-extensions vsix


    【解决方案1】:

    VSIX 包遵循Open Packaging Conventions (OPC)。因此,它不仅仅是一个可以使用 System.IO.Compression 操作的 .zip 文件(如果有的话,它只能用于替换已在清单中声明的​​文件)。您需要使用System.IO.Packaging,这是 VS SDK 在生成 VSIX 文件的 MSBuild 任务内部使用的。

    但是应该有一种更简单的方法来处理您的依赖关系。

    【讨论】:

    • 我会调查 System.IO.Packaging,谢谢。如何以不同的方式完成?一般的问题是,当我的扩展加载了其他扩展,取决于相同的库但不同的版本时,它可能会导致运行时错误。
    • 也许 .dll.config 文件带有版本的程序集重定向? docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
    • 如果 dll 的公共 API 版本不同怎么办?这样不行吗?
    • 较新的 DLL 需要向后兼容
    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 2011-04-17
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多