【问题标题】:Build Solution Problem构建解决方案问题
【发布时间】:2011-08-30 17:51:47
【问题描述】:

我正在使用带有 C# 的 Visual Studio 2010。

当我使用 Start Debugging 工具 (F5) 时,一切似乎都运行良好。所以我构建了解决方案。

现在我关闭 Visual Studio 2010 并转到为程序保留“应用程序”的路径。当我双击该文件时,它可以正常运行程序。但是,当我点击 GUI 中的“保存”按钮时,它会保存文件但被我的 try/catch 块捕获。

为什么当我双击应用程序时会出现这种情况,但在运行 Visual Studio 2010 进行调试时却没有?

编辑:

try
{
    StreamWriter sw2 = new StreamWriter(saveFile2.FileName);
    List<string> universalLineList = new List<string>();
    string file = saveFile2.FileName;
    string[] splitFile = file.Split('\\');
    string[] savedName = splitfile[6].Split('.');
    int i = 1;

    sw2.WriteLine(savedName[0]);
    sw2.WriteLine("Created on: " + DateTime.Now.ToShortDateString() + " at: " + DateTime.Now.ToString("HH:mm:ss"));
    sw2.WriteLine();

    while (i < stepAndRepeatcounter)
    {
        sw2.WriteLine("Line: {0}", i);
        i++;
    }

    sw.WriteLine();

    foreach(var line in theUniversalList)
    {
        if (line.Name.ToUpper().Contains("FID"))
        {
            sw2.WriteLine("Fiducial: {0}, X: {1}, Y: {2}",
                          line.Name,
                          line.XPlacement,
                          line.YPlacement);
        }
    }

    sw2.WriteLine("Placements: ");

    foreach (var line in theUniversalList)
    {
        if (!line.Name.ToUpper().Contains("FID"))
        {
            sw2.WriteLine("Name: {0}, X: {1}, Y: {2}",
                          line.Name,
                          line.XPlacement,
                          line.YPlacement);
        }
    }

    int j = 0;
    sw2.WriteLine("Slots: ");
    foreach (var line in theUniversalList)
    {
        if (!line.Name.ToUpper().Contains("FID"))
        {
            sw2.WriteLine("Slot: {0}, P/D: {1}, P/N: {2}",
                          j,
                          line.PartDescription,
                          line.PartNumber);

            sw2.WriteLine("Slot: 22, P/D: Reject, P/N: {0}",
                          line.PartNumber);

            j++;
        }
    }

    sw2.Close();
}

catch (Exception)
{
    MessageBox.Show("Could not format and save Universal-1 Placements", "Universal-1 Save Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

【问题讨论】:

  • 您可能应该查看被捕获的异常以弄清楚这一点。告诉我们异常是什么,有人可能会很快弄清楚。
  • 抛出的异常是什么?
  • 我确定有一些 I/O 权限,因为在调试模式下都是可写的。
  • 我对为什么它可以运行 Visual Studio 感到困惑,但是当我构建它并将构建的文件移动到另一台计算机(甚至是同一台计算机)上时,它除了保存部分之外它都可以工作..
  • 看 - 不要使用“catch(Exception)”。至少使用“catch(Exception ex)”并给我们“ex.ToString()”的内容

标签: c# visual-studio-2010 debugging try-catch


【解决方案1】:

我认为是以下几行:

string file = saveFile2.FileName;
string[] splitFile = file.Split('\\');
string[] savedName = splitfile[6].Split('.');

我猜你的路径对于第 7 个元素来说不够长,当你从命令行运行文件时(可能路径类似于“.\xzy.txt”

为了 100% 确保也检查异常的 StackTrace,以获取错误所在的行。

【讨论】:

  • 我怎样才能得到最后一项 - 1?所以实际上有 8 个 splitFile 部分,但我想要 #7。所以我猜.. 如果 splitFile 有 15 个部分,我怎么能得到 #14?或者如果 splitFile 有 99 个部分,我怎样才能得到 #98?会不会是 splitFile[splitFile.Length - 1].Split('.'); 之类的东西?
  • 是的。请将 saveName 写入控制台进行检查。我在您的 programm-sn-p 中看不到任何其他可能引发此类异常的部分,并且该行是有风险的。
  • 只要使用System.IO.Path.GetFileName()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2016-12-24
  • 2016-10-24
相关资源
最近更新 更多