2017-12-15 12 views
1

私はdotnetコアプロジェクトを公開すると、数百のフレームワークとネイティブランタイムファイルを含む単一のフォルダーを生成しました。サブフォルダーにネイティブ依存関係を置くことができます

これらのファイルはすべて機能するように要求されていますが、私はそれらをサブフォルダに移動してもアプリケーションを実行させることができますか?例

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

については

はこれを行うことができますパス構成をプロービングのいくつかの並べ替えはありますか?

+0

これがうまくいく唯一の方法は、 '%path%'を修正した場合です.NetはネイティブDLLをどのように探すのかに精通しています。 –

答えて

3

私が見る限り、Standalone (SCD)アプリがあります。

このタイプの配備では、hostfxr.dllは常に慣例によってアプリケーションディレクトリに存在する必要があります。

他のデープでは、それらを任意の場所に移動することができますが、すべてのビルドに対して[AppName].deps.jsonを編集する必要があります。追加のプロービングパスも指定してください。さらに、あなたがそれらを使用していないと確信しているならば、deps.jsonとファイル自体からすべての冗長依存性を自由に削除することができます。

チェックthis demoStandaloneアプリのすべての依存関係を他の場所に移動してlibサブディレクトリに移動しました。

してください、次の点に注意してください

  • 追加探査パスがHelloWorld.runtimeconfig.jsonに設定されていますが、また--additionalprobingpath [パス]を使用することができます引数や環境varibable
  • 私はで相対パスを削除しましたdeps.jsonファイルを使用しないと、ファイルを相対パスのサブディレクトリに置くことになります。追加のプロービングパスNuGet package cacheとみなされ、内部にパッケージレイアウトがあります。

また、Portable (FDD)タイプを持つと考えてください。フットプリントがはるかに少なく、柔軟にファイルを整理できます。

関連する問題