标签: compact-framework

NUnit(或NUnitLite)和.NET CF的"入门"问题

我有一个现有的VS 2005 Std .NET Compact Framework应用程序,我想做一些重大的重构.目前没有单元测试,但我想在搞乱代码之前添加它.我没有单元测试的实践经验,尽管我知道这个理论(只是从来没有实际实现它;我知道:对我感到羞耻:-))这里有一些我正在思考的问题:

a)作为初学者,我应该使用NUnit还是NUnitLite(声称更容易使用)?

b)我是否应该在移动设备或桌面上运行测试(当然,特定于设备的代码除外)?目前桌面看起来更具吸引力,特别是在自动构建中包含测试......

c)我想测试的课程通常如何包含在测试项目中?我的应用程序是一个.EXE文件,即我不能像测试项目中的.DLL程序集一样引用它(或者我可以吗?从未尝试过这个......).我检查了各种NUnit教程,但是没有发现它,或者有一个教程建议将我要测试的类复制并粘贴到测试项目中(yuk!).我应该链接到我的测试项目中的原始源代码文件吗?那些私有方法或其他类的依赖呢?

d)我是否应该开始修改我的原始代码以允许更好的可测试性,例如将私有方法公开,解耦等?这有点像重构之前能够测试,这对我来说听起来不太好......或者最好不要在开始时触摸原始代码,即使这意味着更少的代码覆盖等等?

e)我应该调查大多数人使用的任何其他工具或插件吗?

提前感谢任何答案(如果他们只是上述一个或一些项目,我也很感激.)

nunit unit-testing compact-framework

4
推荐指数
1
解决办法
1318
查看次数

如何使用.net compact framework 3.5在数据网格中隐藏列

我有一个使用DataReader作为其数据源的DataGrid.我想隐藏数据网格的第一列.我正在使用.net紧凑框架3.5.我可以找到Windows窗体的示例,但api已经改变,它们不起作用.

.net c# datagrid compact-framework windows-mobile

4
推荐指数
1
解决办法
1万
查看次数

Windows Ce 6.0上的Compact Framework应用程序中引发的应用程序错误

当我使用取消按钮关闭程序时,我得到一个应用程序错误,它所做的就是关闭表单.

错误说:"应用程序appName.exe遇到严重错误,必须关闭"

我该如何开始修复它?这不是一个抛出的例外; 没有其他信息.它可能是什么,我该如何解决?

compact-framework application-error windows-ce

4
推荐指数
1
解决办法
5893
查看次数

Rijndael算法(如何创建我们自己的密钥)

Rijndael算法的所有样本都是从Rijndael类本身定义的密钥,我们不能提供自己的密钥.对此的任何暗示都会对我有所帮助.

我们创建的示例应用程序是针对Windows Mobile的,它不支持PasswordDeriveBytes

在此先感谢Geetha

关于这个主题的更新:根据下面提供的代码示例,我们已经尝试了它,它似乎正在工作,但这有一个小小的打嗝.当我们解密数据时,在示例的值的右侧有一个8位填充,我们正在加密用于事务的唯一键,它看起来像这样:

加密前:MI03112009044625000000000000008024754008

解密后:MI03112009044625000000000000008024754008揞⑁㋬㓠⥳空⠜资

任何人都可以帮助这个正确的填充发生在原始值.

谢谢杰塔

c# compact-framework windows-mobile

4
推荐指数
1
解决办法
2万
查看次数

如何从URL获取图像到pictureBox?(Windows Mobile)

使用Compact Framework时从URL获取图像的最佳方法是什么以及如何?

我用Google搜索,但找不到任何合适的答案.

我找到的东西就是这个(用它做了一个函数):

    public Bitmap getImageFromUrl()
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(this.SImageUrl);
        request.Timeout = 5000; // 5 seconds in milliseconds
        request.ReadWriteTimeout = 20000; // allow up to 20 seconds to elapse
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream ms = response.GetResponseStream();
        Bitmap imageFromUrl;
        using (MemoryStream ms2 = new MemoryStream())
        {
            int bytes = 0;
            byte[] temp = new byte[4096];
            while ((bytes = ms.Read(temp, 0, temp.Length)) != 0)
                ms2.Write(temp, 0, bytes);
            imageFromUrl = new Bitmap(ms2);
        }

        return imageFromUrl;

    }
Run Code Online (Sandbox Code Playgroud)

但它不会在pictureBox中显示任何图像.有任何想法吗?

谢谢我提前

c# compact-framework

4
推荐指数
1
解决办法
4176
查看次数

没有足够的存储空间来完成此操作 - 程序存储内存?

我已经获得了用.Net CF 3.5编写的Windows Mobile应用程序来修复,其中一个问题与存储有关.

已经出现了几次"没有足够的存储空间可用于完成此操作"的消息 - 它已记录在SQL CE数据库中,并且始终在数据访问期间发生(但不是相同的数据访问位).

我有点困惑的是它是指程序存储器(例如RAM)还是存储存储器(例如永久存储器).它似乎是存储内存,但设备似乎有很多免费.虽然存在一些OutOfMemoryExceptions,但这些看起来与此问题完全无关(因为与图像相关的问题会在不同的时间发生).

我们将SQL CE 3.5与单个连接一起使用,该连接与应用程序一起存储在设备上(而不是存储卡).该设备是运行Windows Mobile 6.1的Motorola MC75.

有什么想法吗?

.net compact-framework windows-mobile-6

4
推荐指数
1
解决办法
2万
查看次数

Visual Studio部署.NET Compact Framework应用程序的所有文件时出现问题

我的应用程序包含一个可执行项目和一个DLL库.我的可执行项目添加了对库项目的引用.

库项目包含一些"内容"文件,如.ini .bmp.问题是,在部署可执行项目时,这些文件不会复制到设备.仅复制dll文件.奇怪的是,所有文件都被复制到桌面计算机上的\ ExecutableProject\bin\Debug目录中.

为了解决这个问题,我将dll项目的部署路径设置为与可执行项目相同,并且我正在部署它们,但是这个解决方案看起来并不好.

我正在使用VS2008,我的设备可以在Windows CE上运行.

deployment compact-framework visual-studio-2008 visual-studio

4
推荐指数
1
解决办法
3752
查看次数

异步编程设计模式

我正在研究CF.NET的一个小技术框架,我的问题是,我应该如何编写异步部分?在MSDN上阅读很多内容但对我来说并不清楚.

所以,这是代码:

public class A
{
    public IAsyncResult BeginExecute(AsyncCallback callback)
    {
        // What should I put here ?
    }

    public void EndExecute()
    {
        // What should I put here ?
    }

    public void Execute()
    {
        Thread.Sleep(1000 * 10);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我......

谢谢 !

c# design-patterns asynchronous compact-framework

4
推荐指数
1
解决办法
4198
查看次数

OutOfMemoryException使用Compact Framework将大图像加载到Bitmap对象

我有内存泄漏的问题.

我有这个代码button_click:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

    Dim ms As New IO.MemoryStream
    Dim bm As New Bitmap("\Application Data\imgs\IMG22.jpg")
    bm.Save(ms, Drawing.Imaging.ImageFormat.Jpeg)
End Sub
Run Code Online (Sandbox Code Playgroud)

当我在我的笔记本电脑上运行.exe时,这段代码工作得很好(我的意思是在带有完整.net框架的windows7/32bits下)但是当我在装有WindowsMo​​bile 6.1的设备上运行应用程序时,应用程序会抛出此异常:

SmartDeviceProject22.exe
OutOfMemoryException
Run Code Online (Sandbox Code Playgroud)

Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
at
System.Drawing.Image.Save(Stream stream, ImageFormat format)
at
SmartDeviceProject22.Form1.Button3_Click(Object sender, EventArgs e)
at
....
Run Code Online (Sandbox Code Playgroud)

图像大小约为200kb,宽度和高度约为1500px.图片细节:

  • 尺寸:1536x2048
  • 水平分辨率:72dpi
  • 水平分辨率:72dpi
  • 比特深度:24
  • 分辨率单位:2
  • 颜色表示:sRGB -

任何帮助,将非常感激.

我尝试@asawyer的代码甚至删除所有的代码,引用等问题保持,我想这是关于图像的宽度/高度或紧凑的框架.

还有其他建议吗?

问题的解决方案和解释 在测试完成后,真正的问题不是内存泄漏,正如@pdriegen所说的内存问题一样.

我将我的代码更改为此(并在移动设备上测试):

 Dim fs As IO.FileStream = IO.File.OpenRead("\Application Data\ryder\IMG23.jpg")
 Dim arrb(fs.Length) As Byte     
 fs.Read(arrb, 0, arrb.Length)
 fs.Close()
 fs.Dispose() …
Run Code Online (Sandbox Code Playgroud)

memory-leaks compact-framework image bitmap opennetcf

4
推荐指数
1
解决办法
3046
查看次数

如何使用C#确定SQL Server CE表中是否存在列?

遗留代码以这种方式执行:

public bool isValidField(string tableName, string fieldName)
{
    bool retVal;
    string tblQuery = string.Format("SELECT {0} FROM {1}", fieldName, tableName);
    checkConnection();
    try
    {
        SqlCeCommand cmd = objCon.CreateCommand();
        cmd.CommandText = tblQuery;
        object objvalid = cmd.ExecuteScalar();
        retVal = (null != objvalid);
    }
    catch
    {
        retVal = false; 
    }
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

...但我发现它并不总是有效.调用该方法后,获取false,一些代码ALTERS表添加一些列,但我得到:

列ID在规范中出现多次.

我在StackOverflow上找到了几个有前途的SQL语句:

if exists(select * from sys.columns 
        where Name = N'columnName' and Object_ID = Object_ID(N'tableName'))  
Run Code Online (Sandbox Code Playgroud)

IF COL_LENGTH('table_name','column_name') IS NULL
Run Code Online (Sandbox Code Playgroud)

...但我不确定如何在C#/ .NET 1.1中实现它

我是否需要使用ExecuteScalar并将返回的值转换为bool?或者是其他东西?

UPDATE

改变它并没有纠正问题:

public bool isValidField(string …
Run Code Online (Sandbox Code Playgroud)

c# sql compact-framework windows-ce sql-server-ce

4
推荐指数
1
解决办法
1万
查看次数