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

Alg*_*ool 5 publish .net-core

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

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

例如

MYAppFolder\
    MyApp.exe
    MyApp.exe.config
    native\
       hostfxr.dll
       netstandard.dll
       ...
Run Code Online (Sandbox Code Playgroud)

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

Iva*_*uba 6

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

对于该类型的部署,hostfxr.dll应始终按照约定存在于app目录中.

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

查看此演示,我将Standalone可以移动到其他位置的应用程序的所有依赖项放到lib子目录中.

请注意以下事项:

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

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