TFSビルド中にリモートシステムにDLLを登録するCodeActivityオブジェクトを作成しようとしています。私は自分のマシンに管理者権限を持つ自分のユーザーアカウントを偽装しています。 (私は今、私のマシンにDLLを登録しようとしています。)ワークフローをローカルでは実行しても、ビルドサーバからではなく、すべての試みがうまくいったことに注意してください。また、手動でregsvr32を実行すると、DLLは正しく登録され、登録解除されます。CodeActivityを使用してTFSビルドからDLLを登録
これは私が使用している非常に削ぎ落としたコードです:
Private DllType As Type 'Type of the DLL being registered is handled elsewhere'
Dim Result As Integer
Result = CInt(DllType.InvokeMember("DllUnregisterServer", BindingFlags.InvokeMethod, Nothing, Activator.CreateInstance(DllType), Nothing))
を、私はそれを実行すると、私はこのメッセージを取得し、最も関連はおそらく内部例外であること、「エントリポイントを見つけることができません。名前の「DllUnregisterServerの」DLL「RptBarcodeLabel.dll」
エラー=呼び出しのターゲットが例外をスローしてきた中で、System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法、オブジェクトのターゲットで、[]の引数をオブジェクト=スタック、SignatureStruct & sig、MethodAttribu System.RuntimeMethodHandle.InvokeMethodFastでTESのmethodAttributes、RuntimeType typeOwner) System.Reflection.RuntimeMethodInfo.Invokeで(IRuntimeMethodInfo方法、オブジェクトのターゲットオブジェクト[]引数、署名SIG、MethodAttributes methodAttributes、RuntimeType typeOwner) (オブジェクトobj、のBindingFlags invokeAttr、バインドバインダー、オブジェクトバインダー、オブジェクトバインダー、オブジェクトバインダー、オブジェクトバインダー、オブジェクトバインダー、バインダーバインダー、オブジェクトバインダー、バインダーバインダー、オブジェクトバインダー) Bindingバインダー、オブジェクトバインダー、オブジェクトバインダー、バインダーバインダー、バインダー、バインダー、バインダー、バインダー、バインダー、バインダー、バインダー)オブジェクト[]という名前のエントリポイントを見つけることができませんTfsCopyFile.TfsRegisterDLL.Execute(CodeActivityContextコンテキスト)、内部例外=でTfsCopyFile.DllRegServer.UnRegister() でTfsCopyFile.DllRegServer.InternalRegServer(ブールfUnreg) で引数) 'DllUnregisterServerの' DLL 'RptBarcodeLabel.dll'にあります。
DLLをリモートで登録するもう1つの方法は、うまくいくかもしれません - TFSからのビルド中にプロセスが起動できない限り、私は提案を公開しています。
ありがとうございます - 私はpsexecをチェックし、CodeActivtyアイテムと組み合わせて、そのトリックを行いました。 – Scott