我可以将本机依赖项放在子文件夹中

问题描述 投票:3回答:1

当我发布一个dotnet核心项目时,它生成了一个包含数百个框架和本机运行时文件的文件夹。

我知道这些文件是使一切工作所必需的,但是我可以将它们移动到子文件夹中并仍然让我的应用程序运行吗?

例如

MYAppFolder\
    MyApp.exe
    MyApp.exe.config
    native\
       hostfxr.dll
       netstandard.dll
       ...

是否有某种探测路径配置可以做到这一点?

.net-core publish
1个回答
5
投票

据我所知,你有一个Standalone (SCD)应用程序。

对于那种类型的部署,hostfxr.dll应该按照惯例存在于app目录中。

至于其他deps,您可以将它们移动到任何位置,但是您需要为每个构建编辑[AppName].deps.json,并指定其他探测路径。此外,如果您确定不使用它们,则可以自由删除所有冗余依赖项(来自deps.json和文件本身)。

检查this demo我把Standalone应用程序的所有依赖项放到了lib子目录中,该应用程序可以移动到其他位置。

请注意以下事项:

  • 额外的探测路径在HelloWorld.runtimeconfig.json中设置,但您也可以使用--additionalprobingpath [path]参数或Environment varibable
  • 我删除了deps.json文件中的相对路径,因为否则我会将文件放到那些相对路径子目录中 - 其他探测路径被认为是NuGet package cache因此在其中有一个包布局。

另外,考虑使用Portable (FDD)类型。您将拥有更少的占用空间和更灵活的文件排列。

© www.soinside.com 2019 - 2024. All rights reserved.