2014-01-06 33 views
1

我有一個很長的字符串,我試圖在process.start調用中連接,並且我弄亂了語法。以下是我迄今爲止:在VB.NET中的串聯

System.Diagnostics.Process.Start(Environment.GetEnvironmentVariable("VS110COMNTOOLS") & .. \Ide\MSTEST.EXE", "/Testsettings:" & rwSettings & " /Testcontainer:" & rwContainer & " /Resultsfile:" & utilnamespace.rwResults)

因此,大家可以看到,我試圖用一堆參數啓動過程MSTEST.EXE。我的問題主要圍繞第一點。我需要它來獲取VS2012的安裝目錄,所以它知道在哪裏可以找到MSTEST.EXE,所以我試圖變得聰明並使用環境變量,但是它返回工具目錄......所以我需要它來備份一個步驟進入IDE目錄。

我希望能夠做到這一點,而不必定義我自己的功能從註冊表項中找到安裝目錄。任何想法我怎麼能做到相當於..

+2

只要把..放在路徑中。 ''.. \ ide \ mstest.exe「' – asawyer

+0

我認爲這隻會被解析爲一個字符串,並失敗,但我會給出一個鏡頭。 –

+1

而只是爲了記錄:'String.Concat(「str1」,「str2」,「str3」)' –

回答

4

執行目錄級聯最安全的方法是使用IO.Path.Combine

Dim msTestPath As String 
msTestPath = IO.Path.Combine(Environment.GetEnvironmentVariable("VS110COMNTOOLS"), "..\Ide\MSTEST.EXE") 

這將自動確保目錄正確終止。如果你只是進行直接字符串連接,並且某人或某事已從環境變量中刪除了尾部\,那麼直接字符串連接將產生不正確的結果(即\ tools..ide \而不是\ tools..ide)。