在VB中连接复杂的字符串。净

时间:2014-02-04 21:08:56

标签: vb.net string concatenation process.start

我正在使用START-PROCESS使用多个定义容器和测试设置的参数来调用MSTEST,但是我觉得它在我连接它的方式上很窒息。在将此字符串放入START-PROCESS

之前,我是否应该使用其他一些方法来构造它?
Dim rwSettings As String = "\\PerfvsCtlr2\LoadtestSettings\PerfVSCtlr2forRemote.testsettings"
Dim rwContainer As String = "\\PerfvsCtlr2\LoadTest\LoadTestDefs\Heifer_Interactive_Peak_Workload.loadtest"
Dim rwResults As String = Workload.txtRwResults.Text
System.Diagnostics.Process.Start(Environment.GetEnvironmentVariable("VS110COMNTOOLS") & "..\Ide\MSTEST.EXE", "/Testsettings:""" & rwSettings & "" & " /Testcontainer:""" & rwContainer & "" & " /Resultsfile:""" & rwResults & "")

目前这个问题是未知的,因为process.start打开和关闭窗口太快,我无法捕获任何类型的错误消息。所以我的问题是双重的:

上述连接看起来是否正确?有没有办法可以获得有关最终执行字符串Process.Start放在一起的更多信息或者它返回的错误消息?

2 个答案:

答案 0 :(得分:2)

您可以使用Path.Combine构建路径,使用String.Format构建Process.Start的参数:

Dim rwSettings As String = "\\PerfvsCtlr2\LoadtestSettings\PerfVSCtlr2forRemote.testsettings"
Dim rwContainer As String = "\\PerfvsCtlr2\LoadTest\LoadTestDefs\Heifer_Interactive_Peak_Workload.loadtest"
Dim rwResults As String = "Workload.txtRwResults.Text"

Dim fileName = System.IO.Path.Combine(Environment.GetEnvironmentVariable("VS110COMNTOOLS"), "Ide\MSTEST.EXE")
Dim args = String.Format("/Testsettings:{0} /Testcontainer:{1} /Resultsfile:{2}", rwSettings, rwContainer, rwResults)

System.Diagnostics.Process.Start(fileName, args)

然而,我必须承认,我不确定这是否会产生预期的结果。无论如何它可能会给你一个想法。

答案 1 :(得分:1)

我怀疑你的问题是你没有关闭你的引号,例如:

" /Testcontainer:""" & rwContainer & ""

应该是:

" /Testcontainer:""" & rwContainer & """"

请注意,末尾的双引号需要是四重引号。简单地说""表示空字符串。

你应该用别的吗?大概。如果您使用StringBuilderString.Format,它会更具可读性和效率,但即便如此,您仍需要修复结束引号问题。