2016-07-11 2 views
3

内の文字列パスを使用してDLLを必要とF#でこれを行うにはそこの方法です:は、F#

let fakeToolsPath = "D:\tools\FAKE\tools\FakeLib.dll" 

#r fakeToolsPath 

偽のツールは、コードをビルドするビルドエージェントに応じて、異なるパス上にあるので、私はする必要があります環境変数や設定ファイルから動的に設定することができます。増加hackinessの順に

+2

私はそれがうまくいくとは思わない。私が周りを回る方法は、私の '#r'で相対パスを使用することですが、それはあなたのためにはうまくいかないかもしれません。これは少しハックですが、あなたは '#I @" D:\ tools \ FAKE \ tools \ FakeLib.dll "と' #I @ "C:\ OtherTools \ FAKE \ tools \ FakeLib.dll" '最後に' #r "FakeLib.dll" 'を実行してください。つまり、DLLがどこにあってもどこにでも含めることができます。もう1つのオプションは、 '#if'sなら束を使い、それをコンパイラの条件付きシンボルとして渡すことです。 – s952163

+0

はい、少しハッキーですが、私はそれが状況を最大限に活用すると考えています。全体的に、同じコードセットを別々に構築するエージェントを作ることは、欠陥のあるアプローチのように思えるかもしれません(もちろん、それは良い理由があるかもしれませんが、確かに理想的ではありません)。支払う必要がある価格。 – TeaDrivenDev

答えて

6

三アイデア、 - あなたは1があなたのシナリオでは、最も理にかなって裁判官になるでしょう:.fsxスクリプトで

  1. 、あなたはどこのスクリプトディレクトリを取得するために__SOURCE_DIRECTORY__を使用することができます位置しています。あなたのdllが常にスクリプトと同じディレクトリにある場合、それを取得するための "フック"として使用することができます。
  2. fsi.exeには、コマンドライン--referenceがあります。これは、必要な操作を行う必要があります。 fake.exeを代わりに使用している場合は、--fsiargsを使用して転送できます(詳細はリンクをご覧ください)。
  3. それ以外の場合は、symlinkをCIジョブ設定の別のビルドステップとして作成し、スクリプトのパスをハードコードします。