我爲Exchange 2010管理編寫了一個cmdlet。所以我需要在Exchange 2010服務器上進行調試。 我有一個Exchange 2010在虛擬機上啓動(我有一個VS2012)。VS 2012 cmdlet遠程調試不會在斷點處停止
我的調試計劃是這樣的。作爲生成後的操作我設置如下:
cmd.exe /c copy $(TargetPath) \\test-exch2010-1\c$\temp /y
由於運行命令我設置如下:
Start external command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Command line arguments: -NoExit -Command "Import-Module C:\Temp\ExchMgmt.dll"
當我運行該項目的PowerShell和目標服務器上適當的命令運行。但是,當我運行cmdlet時,根本沒有任何斷點。
如果我以相同的方式構建項目,但手動在目標服務器上運行Powershell,請導入模塊,然後將VS2012附加到powershell.exe過程中,所有斷點都會成功命中。雖然有時會發生同樣的問題
Exch2010服務器在域中,VS2012計算機不在。我使用域中唯一的帳戶進行連接,這是一切管理員:-)此外,我已明確授權此用戶在SecPol中調試程序。
此外我試圖調試這個項目是VS2010。在那裏我收到一條消息:「以下模塊是通過啓用優化或者沒有調試信息來構建的」。 我雙重檢查項目設置:
- 優化代碼被禁用
- 調試信息是完全
- PDB文件中生成
我通過類似主題挖,並發現禁用僅我的代碼設置幫助。我試過這個,但它在我的情況下沒有幫助
我注意到System.Data.dll具有不同的平臺目標(我使用x64,這可能是一個原因)的警告。由於我沒有使用這個程序集,我從引用列表中刪除了它。之後,我注意到當我運行該項目時沒有變化。但是,當我連接調試到運行的powershell.exe過程與加載我的模塊遠程計算機上我看到調試日誌說明如下:
'powershell.exe' (CLR v2.0.50727: DefaultDomain): Loaded 'C:\temp\ExchMgmt.dll'. Cannot find or open the PDB file.
但是我保證我DLL和PDB文件複製到遠程計算機。 我檢查加載模塊(調試 - > Windows - >模塊),發現我的模塊加載了沒有調試符號。當我打開符號加載信息窗口時,我發現以下條目:
d:\Projects\ExchMgmt\ExchMgmt\obj\x64\Debug\ExchMgmt.pdb: PDB does not match image.
我檢查過powershell.exe進程是x64。但我也注意到它說CLR是2.0.50727。不知道這是正確的,因爲我的模塊的目標框架是3.5