VS2010 写的C#程序在别的电脑上不能运行

wenjin1314 2012-09-19 10:31:47
我是实在不知道什么原因了。 情况如下。

XP的VS2010下编写的一个C#小程序,框架选的是2.0 (4.0的也试过),Release后的exe程序拷贝到别的xp电脑上不能运行。
运行的时候不报任何提示,不报错,任务管理器进程里没有东西,就是没有反应。
现在在控制面板里的添加与删除程序中有如下:
1. Microsoft .NET Framework 2.0
2. Microsoft .Net Framework 4 Clent Profile
3. Microsoft .Net Framework 4 Extended
4. Microsoft Visual C++ 2005 Redistributable
5. Microsoft Visual C++ 2008 ALT Update kb73924 -x86 9.0.30729.4148
6. Microsoft Visual C++ 2008 Redistributable -x86 9.0.30729
7. Microsoft Visual C++ 2010 Redistributable -86 10.0.30319

另外,电脑也重启过了。

请问是什么原因啊?指教
...全文
680 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
上香 2012-09-26
  • 打赏
  • 举报
回复
我今天 也遇到 你的 问题了,,求 解决 方法,,急急急急急。。。。
cheng2005 2012-09-20
  • 打赏
  • 举报
回复
捕捉一下全局异常
AppDomain.CurrentDomain.UnhandledException
代码没细看,多半是出异常没处理,尤其是在主线程之外出了异常不捕获的话程序直接就崩掉了。
wenjin1314 2012-09-20
  • 打赏
  • 举报
回复
这个是主窗体代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;

namespace SendDataTool
{
public partial class Form1 : Form
{
public int iSamll, iHigh;
const string FILENAME = "bee.ini";

[DllImport("kernel32.dll", EntryPoint = "CopyMemory")]
static extern void CopyMemory(IntPtr Destination, IntPtr Source, uint Length);

/// <param name="section">节点名称[如[TypeName]]</param>
/// <param name="key">键</param>
/// <param name="val">值</param>
/// <param name="filepath">文件路径</param>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
/// <param name="section">节点名称</param>
/// <param name="key">键</param>
/// <param name="def">值</param>
/// <param name="retval">stringbulider对象</param>
/// <param name="size">字节大小</param>
/// <param name="filePath">文件路径</param>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);


public Form1()
{
InitializeComponent();
Loadini();
}

private void Loadini() // 读取配置参数
{
string sPathFile = Directory.GetCurrentDirectory() + "\\" + FILENAME;
if (File.Exists(sPathFile))
{
string sPoint;

StringBuilder temp = new StringBuilder(1024);
// 串口号
GetPrivateProfileString("config", "ComPort", "1", temp, 1024, sPathFile);
cbCom.SelectedIndex = Convert.ToInt32(temp.ToString()) - 1;
// 网关号
GetPrivateProfileString("config", "GateWay", "1000", temp, 1024, sPathFile);
tbGateID.Text = temp.ToString().Trim();
// 节点号
GetPrivateProfileString("config", "PointNo", "", temp, 1024, sPathFile);
sPoint = temp.ToString().Trim();

string[] sTempPoint = GetString(sPoint, ",");
foreach (string str in sTempPoint)
{
if ((str.Trim() != "") && (IsNumber(str.Trim())))
lbPointList.Items.Add(Convert.ToString(str));
}

// 数据范围小值
GetPrivateProfileString("config", "MinRegion", "0", temp, 1024, sPathFile);
tbSmallData.Text = temp.ToString().Trim();
// 数据范围大值
GetPrivateProfileString("config", "MaxRegion", "0", temp, 1024, sPathFile);
tbHighData.Text = temp.ToString().Trim();
// 上传频率
GetPrivateProfileString("config", "TimeRate", "1000", temp, 1024, sPathFile);
tbRate.Text = temp.ToString().Trim();
}
else
{
File.CreateText(sPathFile);
}

}

private string[] GetString(string str, string cutStr)
{
char[] cutChar = cutStr.ToCharArray();
string[] sArray = str.Split(cutChar);
return sArray;
}

private void Saveini() // 设置配置参数
{
string sPathFile = Directory.GetCurrentDirectory() + "\\" + FILENAME;
if (!File.Exists(sPathFile))
File.CreateText(sPathFile);
WritePrivateProfileString("config", "ComPort", (cbCom.SelectedIndex + 1).ToString().Trim(), sPathFile);
WritePrivateProfileString("config", "GateWay", tbGateID.Text.ToString().Trim(), sPathFile);
// 节点号
int iCount = lbPointList.Items.Count;
if (iCount > 0)
{
string sTemp = "";
for (int i = 0; i < iCount; i++)
{
sTemp += lbPointList.Items[i].ToString() + ",";
}

sTemp = sTemp.Substring(0, sTemp.Length - 1);
WritePrivateProfileString("config", "PointNo", sTemp, sPathFile);
}
//

WritePrivateProfileString("config", "MinRegion", tbSmallData.Text.ToString(), sPathFile);
WritePrivateProfileString("config", "MaxRegion", tbHighData.Text.ToString().Trim(), sPathFile);
WritePrivateProfileString("config", "TimeRate", tbRate.Text.ToString().Trim(), sPathFile);


}

private void btnClose_Click(object sender, EventArgs e)
{
CloseCom();
this.Close();
}

private void btnAddPoint_Click(object sender, EventArgs e)
{
int iPoint;
string sPoint;
sPoint = tbPointID.Text.Trim();
iPoint = Convert.ToInt32(sPoint);
lbPointList.Items.Add(Convert.ToString(iPoint));
}

private void btnDelPoint_Click(object sender, EventArgs e)
{
int iSelect;
iSelect = lbPointList.SelectedIndex;
if (iSelect != -1)
{
lbPointList.Items.RemoveAt(iSelect);
}
else
{
MessageBox.Show("未选择节点号!", "提示");
}
}



private void btnSendData_Click(object sender, EventArgs e)
{
if (btnSendData.Tag.ToString() == "0") // 打开窗口发送数据
{
if (IsNumber(tbSmallData.Text.ToString().Trim()))
{
iSamll = Convert.ToInt32(tbSmallData.Text.ToString().Trim());
}
else
{
MessageBox.Show("数据范围设置不正确,请输入整数!", "提示");
tbSmallData.Focus();
return;
}
if (IsNumber(tbHighData.Text.ToString().Trim()))
{
iHigh = Convert.ToInt32(tbHighData.Text.ToString().Trim());
}
else
{
MessageBox.Show("数据范围设置不正确,请输入整数!", "提示");
tbHighData.Focus();
return;
}
if (iSamll >= iHigh)
{
MessageBox.Show("数据范围输入不正确!", "提示");
tbSmallData.Focus();
return;
}
if (!OpenCom())
{
return;
}
btnSendData.Tag = "1";
btnSendData.Text = "停止发送";

if (IsNumber(tbRate.Text.ToString().Trim()))
{
tmrSenddata.Interval = Convert.ToInt32(tbRate.Text.ToString().Trim());
tmrSenddata.Enabled = true;
}
else
{
MessageBox.Show("发送频率输入不正确,请输入整数!", "提示");
tbRate.Focus();
return;
}
}
else
{
tmrSenddata.Enabled = false;
CloseCom();
btnSendData.Tag = "0";
btnSendData.Text = "开始发送";
}
}

private bool OpenCom() //打开串口
{
if (cbCom.Text.ToString().Trim() == "")
{
MessageBox.Show("未选中串口号!", "提示");
return false;
}
ComPort.PortName = cbCom.Text.Trim();
try
{
ComPort.Open();
return true;
}
catch
{
MessageBox.Show("串口打开失败!", "提示");
return false;
}
}

private void CloseCom() //关闭串口
{
if (ComPort.IsOpen)
{
try
{
ComPort.Close();
}
catch
{
MessageBox.Show("串口关闭失败!", "提示");
}
}

}

public void WriteLog(byte[] bData, int len)
{
if (chbShowLog.Checked)
{
string sLog, sTemp;
sLog = ":";
for (int i = 0; i < len; i++)
{
sTemp = Convert.ToString(bData[i], 16);
sTemp = sTemp.ToUpper();
if (sTemp.Length == 1)
{
sTemp = "0" + sTemp;
}
sLog += " " + sTemp;
}
rtbLog.AppendText(sLog + "\n");
rtbLog.Select(rtbLog.Text.Length, 0);
rtbLog.ScrollToCaret();
}
else
{
rtbLog.Clear();
}

}


}




wenjin1314 2012-09-20
  • 打赏
  • 举报
回复
贴上该程序所有的代码!


using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace SendDataTool
{
class DataStruc
{
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct __b2_MsgHead_t
{
public byte HeadFlag1; //消息头1
public byte HeadFlag2; //消息头2
public byte MsgLen; //数据长度
public byte FunCode; //功能码
public UInt32 CallerID; //主叫ID 节点号
public UInt32 CalleeID; //被叫ID 网关号
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct __b2_SampleData_t
{
public UInt16 NodeType; // 节点类型ID
public byte TotalPath; // 节点总通道数
public byte PathFlag; // 通道标识,d0=1,表示该数据包为报警数据包,
// 否则为正常数据包
// d1=1 表示可以通过RF进行通道设置
// d2=1 表示可以通过串口进行通道设置
// d3=1 表示无RTC时钟,数据采集时间无效
public byte PathLabelID; // 通道标识ID,详见“通道测量类型ID”定义
public byte PathUnitID; // 通道单位ID,详见“通道工程单位ID”定义
public byte RFDensity; // 场强接收发送强度,取值0~4,4为最好
public byte BattQuan; // 电池电量,取值范围在0~100 之间,表电池的剩余电量
public UInt32 CurrentTime; // 数据采集时间,无RTC时钟时无效
public float AlarmMin; // 报警通道的报警下限值,单位为工程单位
public float AlarmMax; // 报警通道的报警上限值,单位为工程单位
public float AlarmRate; // 当前设置的报警或触发斜率值,单位为工程单位
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public float[] SampValue; // 采样值,n= TotalPath,多通道单位不一致时根据
// 节点类型对应的模型文件
}
}
wenjin1314 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

别的xp电脑 得安装框架。
[/Quote]

我上面列的7条就是另一台Xp电脑上已装的框架。
我今天试,随便编译一个无代码的程序是可以运行的。我感觉是我这个小程序有啥问题。
hovoy 2012-09-20
  • 打赏
  • 举报
回复
别的xp电脑 得安装框架。
wenjin1314 2012-09-20
  • 打赏
  • 举报
回复
自己再想办法吧。
wenjin1314 2012-09-19
  • 打赏
  • 举报
回复
刚学习使用C#,搞个小程序就这么麻烦。 真是纠结。
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编的《微信小程序开发宝典》。 购课请咨询qq2326321088

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧