【问题标题】:.net core package dependencies.net 核心包依赖项
【发布时间】:2016-10-06 01:12:39
【问题描述】:

我想构建一个可以部署的本机 .NET Core 可执行文件,但是当我发布项目时,编译器会将所有依赖项导出到同一个目录中,并且可执行文件需要它们在不支持的系统上运行已安装 .NET Core 运行时。有没有办法将 DLL 与项目 DLL 或可执行文件一起编译/打包?谢谢。

【问题讨论】:

  • 为什么只能是一个文件?
  • 用于可移植二进制版本。
  • 我认为这是矛盾的。你不可能真正拥有一个可移植的二进制版本,因为每个平台都有不同的二进制文件格式。
  • 便携不代表跨平台。这意味着准备好在任何地方运行(在其设计的构建环境中)。即不需要运行时/依赖项/库。该程序不需要安装程序来允许它运行(需要注册条目等),它应该是自包含的。

标签: .net dependencies .net-core


【解决方案1】:

要将依赖项合并到已编译的程序集中,请查看 Costura for Fody:

https://github.com/Fody/Fody

https://github.com/Fody/Costura

我以前用过,效果很好。您可以定义某些依赖项以合并到一个名为 FodyWeavers.xml 的文件中(有关示例,请参见 Costura-Fody 链接)。

因此,例如(取自 Costura README.md)您可以有两个依赖项 'Foo' 和 'Bar' 可以合并到您的目标程序集中,如下所示在 FodyWeavers.xml文件。

<Costura>
    <IncludeAssemblies>
        Foo
        Bar
    </IncludeAssemblies>
</Costura>

除此之外,ILMerge 是一个不错的选择:https://www.nuget.org/packages/ilmerge

编辑:找到了一个链接,描述了在自包含应用程序中部署所需的 .NET 核心依赖项:http://druss.co/2016/08/deploy-and-run-net-core-application-without-installed-runtime-self-contained-applications/

【讨论】:

  • 我一直在 .NET Core 框架中寻找更内部的解决方案,但该解决方案也同样适用。我已经尝试构建一个自包含的可执行文件,但所做的只是将运行时库包含到二进制文件中并将 DLL 导出到导出位置。这意味着如果您尝试在其依赖项目录之外运行可执行文件,那么它将返回“错误:缺少程序集”消息。我不知道这是否是故意的,或者 .NET Core 是否实际上应该将依赖项绑定到构建中。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 2018-12-14
  • 2023-03-12
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
相关资源
最近更新 更多