首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在调试中创建输出,但不在版本中创建- Visual Studio 2012

在调试中创建输出,但不在版本中创建- Visual Studio 2012
EN

Stack Overflow用户
提问于 2014-01-10 02:03:25
回答 1查看 269关注 0票数 0

我有一个VB Visual Studio2012项目,我可以在其中创建.csv文件。下面是它的摘录。基本上,当我调试我的程序时,它会像预期的那样在bin/debug中创建.csv文件。但是当我发布这个程序的时候,我怎么也想不出它在哪里或者为什么没有创建它们。我已经将构建输出路径更改为几个不同的时间,并确保我处于它的“发布”部分。我甚至不关心输出在哪里,我只是想要它在某个地方!谢谢

编辑:好的,我找到了这个文件...C:\Users\ah0169569\AppData\Local\Apps\2.0\BLWZBB1R.02J\XTOQVPX5.N3O\payr..tion_d‌​310a0976fa1c317_0001.0000_81024c9c62a3db84,所以这是一个愚蠢的位置。如何将输出更改为位于我的应用程序文件夹中?还是用户指定的地方?

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2014-01-10 02:19:48

在你的代码中要修改的第一件事是Try/Finally。通过这种方式,你永远不会知道你的代码是否失败,以及失败的原因。我添加了一个Catch和一个MessageBox,只是为了显示是否有错误

代码语言:javascript
运行
复制
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 Statement,它确保在出现异常的情况下也能适当地关闭流。最新的是对StringBuilder用法的修正,它可以在一次调用中累积文本并编写所有内容。当然,这对于小数据来说不是问题。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21027793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档