2017-09-21 4 views
0

TFSデプロイメントタスク "リモートマシンのPowerShell"を使用しています。以前にターゲットマシンにコピーしたPowerShellスクリプトを実行します。 PowerShellスクリプトは、.exeに依存するコマンドレットを呼び出します。スクリプトを実行するときに、私は次のエラーを取得する:TFSデプロイメントタスクから実行しているリモートPowerShellセッションでVisualStudioRemoteDeployerにファイル依存関係を追加する方法

System.IO.FileNotFoundException: C:\Windows\DtlDownloads\VisualStudioRemoteDeployer3be2a227-e8d4-4e1f-b155-d1a53666793b\NeuronExplorer.exe 

私が実際に実行するために利用できるようにすること過渡ディレクトリにNeuronExplorer.exeを取得する方法を見つけ出すことはできません。

私はGACingを試しました。 GACは正常に終了しましたが、同じエラーが発生します。

PATH環境変数へのパスを追加しようとしましたが、同じエラーが発生しました。

NeuronExplorer.exeを一時フォルダにコピーすると成功しましたが、実際に動作させるには非常に高速にする必要があります。このファイルをリモートコンテキストで利用できるようにする方法が必要です。

+0

'.exe'をどのように呼び出しているかを示す関連するpowershellスクリプトを追加できますか?相対パスを使用しているのか、それともハードコードしていますか? –

+0

私が呼び出しているコマンドレットは、サードパーティのDLLを使用しています。サードパーティのDLLは、 '.exe'に依存しています。 –

答えて

0

私がこれを解決する方法は、.exeに依存するAPIコードを呼び出す前にを私のSystem.AppDomain.CurrentDomain.BaseDirectoryにコピーすることでした。

let fileName = (FileInfo pathToExe).Name 
let targetFile = sprintf "%s\\%s" System.AppDomain.CurrentDomain.BaseDirectory fileName 
File.Copy(pathToExe, targetFile, true) 

私は可能なSystem.AppDomain.CurrentDirectory.Load(assemblyBytes)を使用して同じことを達成するが、私のためにFile.Copy作品でした。

これは、この特定の問題に苦労することなく他の誰かに役立つことを望みます。

0

ここで最も簡単な回避策は、完全で明示的なパスを介して実行可能ファイルを呼び出すことです。

また、マシンレベルでPATH環境変数を変更したかどうかを指定していませんでしたが、そうした場合は、そのマシンでエージェントを再起動して、変更をエージェントプロセスに反映させる必要があります。

関連する問題