簡體   English   中英

在調試中創建輸出,但在發行版中未創建輸出-Visual Studio 2012

[英]Creates output in debug, but not in release - Visual Studio 2012

我有一個VB Visual Studio 2012項目,在其中創建.csv文件。 以下是摘錄。 基本上,當我調試程序時,它會按預期在bin / debug中創建.csv文件。 但是當我發布程序時,我無法弄清楚我的一生是什么原因或為什么不創建它們。 我已將構建輸出路徑更改為幾個不同的時間,並確保我處於其中的“發布”部分。 我什至不在乎輸出在哪里,我只想要它在某個地方! 謝謝

編輯:好的,所以我找到了文件... C:\\ Users \\ ah0169569 \\ AppData \\ Local \\ Apps \\ 2.0 \\ BLWZBB1R.02J \\ XTOQVPX5.N3O \\ payr.tion_d‌310a0976fa1c317_0001.0000_81024c9c62a3db84所以這是一個愚蠢的位置。 如何更改輸出到應用程序文件夾中? 還是用戶指定的某個地方?

Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String)
    DataTable2CSV(table, filename, ",")
End Sub
Sub DataTable2CSV(ByVal table As DataTable, ByVal filename As String, _
    ByVal sepChar As String)
    Dim writer As System.IO.StreamWriter
    Try
        writer = New System.IO.StreamWriter(filename)

        ' first write a line with the columns name
        Dim sep As String = ""
        Dim builder As New System.Text.StringBuilder
        For Each col As DataColumn In table.Columns
            builder.Append(sep).Append(col.ColumnName)
            sep = sepChar
        Next
        writer.WriteLine(builder.ToString())

        ' then write all the rows
        For Each row As DataRow In table.Rows
            sep = ""
            builder = New System.Text.StringBuilder

            For Each col As DataColumn In table.Columns
                builder.Append(sep).Append(row(col.ColumnName))
                sep = sepChar
            Next
            writer.WriteLine(builder.ToString())
        Next
    Finally
        If Not writer Is Nothing Then writer.Close()
    End Try
End Sub

更改代碼的第一件事是“嘗試/最終”。 這樣,您將永遠不會知道代碼是否失敗以及為什么失敗。 我添加了一個Catch和一個MessageBox只是為了顯示是否有錯誤

Try
    Using writer = New System.IO.StreamWriter(filename)

        Dim builder As New System.Text.StringBuilder
        For Each col As DataColumn In table.Columns
            builder.Append(col.ColumnName + sepChar)
        Next
        builder.Length -= 1
        builder.AppendLine()

        For Each row As DataRow In table.Rows
            For Each col As DataColumn In table.Columns
                builder.Append(row(col.ColumnName) + sepChar)
            Next
            builder.Length -= 1
            builder.AppendLine()
        Next
        writer.Write(builder.ToString())
    End Using
 Catch ex As Exception
    MessageBox.Show(ex.Message)
 End Try

接下來的事情是using語句 ,即使在發生異常的情況下,也可以確保正確關閉Stream。 最新的功能是對StringBuilder的使用進行的修復,該功能可在一次調用中累積文本並編寫所有內容。 當然,這對於小數據來說不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM