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

时间:2017-12-15 21:16:36

标签: .net-core publish

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

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

例如

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

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

1 个答案:

答案 0 :(得分:5)

据我所知,您有Standalone (SCD)个应用

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

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

检查this demo我已将可以移至其他位置的Standalone应用的所有依赖项放到lib子目录中。

请注意以下内容:

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

另外,请考虑使用NuGet package cache类型。您可以更轻松地安排文件,并且可以更灵活地安排文件。