我有很多NUnit和MBUnit的经验,但我是.NET Compact Framework开发的新手,我想要站稳脚跟.
是否有一个流行的.NET Compact Framework单元测试框架,如果有,它是什么?
我怎么知道这是App的当前文件夹?我的意思是......有没有办法知道exe在运行代码中的位置?
提前致谢
我正在开发.Net Compact Framework中的移动应用程序.我设法编辑注册表HKEY_CLASSES_ROOT,以便点击具有.xyz扩展名的文件将打开我的应用程序.基本上,我需要在单击该文件时对该文件进行一些操作.
但是,我意识到,如果我第一次这样做,它会到达program.cs static void Main.但是当程序运行时,我再次单击带有.xyz扩展名的文件时,它不会加载程序static void Main.我尝试在当前运行的表单中设置断点但仍然没有.
那它去哪了?如何检测文件.xyz被点击并做一些事情?
我想记录我的.NET应用程序使用的所有DLL的版本.如果在启动时或首次使用每个DLL时生成日志输出并不重要.
我想到的第一个解决方案是迭代所有DLL文件,这些文件与我的程序集位于同一目录中.但这是我最好的选择吗?有没有更好的方法来做到这一点?重要的是,该解决方案也应该适用于.NET-Compact-Framework.
我是否需要在安装了.NET 3.5的设备上安装.NET 2.0?
到目前为止,我的应用程序适用于.NET 2.0(可能应该更快),但长期计划是将其移植到.NET 3.5.我需要订购设备,OEM需要知道应该将哪个版本的.NET添加到Windows CE映像(版本5.0).我可以请他添加.NET 2.0和.NET 3.5吗?
我需要在.NETCF中创建一个透明背景的图像,我使用洋红色作为我希望透明的背景.我尝试这样做的方法是覆盖onPaint().但我无法让背景透明化?这就是我所拥有的:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
ImageAttributes imageAttributs = new ImageAttributes();
imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255),
Color.FromArgb(255, 0, 255));
g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height,
GraphicsUnit.Pixel, imageAttributs);
base.OnPaint(e);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试包含ImageAttributes时,我的图像根本没有被绘制?
我有一个AutoScroll设置为的面板true.在其中,我以编程方式添加ComboBox控件.如果我添加足够的控件以超过面板的可视大小,则会出现一个滚动条(到目前为止一直很好).但是,如果我打开可视区域底部附近的一个组合框,则组合列表未正确显示,并且可滚动区域似乎已展开.这导致所有控件被"拉"到面板的新底部,顶部有一些新的空白区域.如果我继续点击面板底部的下拉菜单,可滚动区域将继续无限扩展.我将控件固定在左侧,右侧和顶部,因此我认为不会涉及锚定.是否有明显可能导致这种情况的事情?
更新:看起来问题在于将控件固定到右侧.如果我没有向右锚,那么我就不会有这种奇怪的行为.但是,如果没有右侧锚定,控制将被滚动条切断.
这是我构建的简化测试用例,显示了该问题:
public Form1()
{
InitializeComponent();
Panel panel = new Panel();
panel.Size = new Size(80, 200);
panel.AutoScroll = true;
for (int i = 0; i < 10; ++i)
{
ComboBox cb = new ComboBox();
cb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
cb.Items.Add("Option 1");
cb.Items.Add("Option 2");
cb.Items.Add("Option 3");
cb.Items.Add("Option 4");
cb.Location = new Point(0, i * 24);
panel.Controls.Add(cb);
}
Controls.Add(panel);
}
Run Code Online (Sandbox Code Playgroud)
如果您滚动面板底部并点击底部附近的组合框,您会发现奇怪的行为.
我正在编写一种仅在内部网络中使用的服务.我将使用紧凑框架(3.5)从移动客户端访问它.我是WCF的新手 - 这会为我提供创建标准Windows服务时无法获得的任何内容吗?在这种环境中使用WCF有什么缺点吗?
我有一个在CF.NET和.NET下运行的库,但两者之间的序列化不同.因此,在.NET下生成的XML文件在.NET下是不可读的,这对我来说是个大问题!
这里是代码示例:
[Serializable, XmlRoot("config")]
public sealed class RemoteHost : IEquatable<RemoteHost>
{
// ...
}
public class Program
{
public static void Main()
{
RemoteHost host = new RemoteHost("A");
List<RemoteHost> hosts = new List<RemoteHost>();
hosts.Add(host);
XmlSerializer ser = new XmlSerializer(typeof(List<RemoteHost>));
ser.Serialize(Console.Out, hosts);
}
}
Run Code Online (Sandbox Code Playgroud)
CF.NET xml:
<?xml version="1.0"?>
<ArrayOfConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<config Name="A">
</config>
</ArrayOfConfig>
Run Code Online (Sandbox Code Playgroud)
.NET xml
<?xml version="1.0" encoding="ibm850"?>
<ArrayOfRemoteHost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RemoteHost Name="A">
</RemoteHost>
</ArrayOfRemoteHost>
Run Code Online (Sandbox Code Playgroud)
如何修改程序以生成相同的XML?
我们有Intermec CK71移动设备(WiFi)。在任何情况下,设备都会发送请求(GET,PUT或POST),然后失去连接。我们可以使用什么方法来防止重复的PUT或POST?客户端设备如何在断开连接之前知道服务器是否处理了请求?
我已经看到过类似的帖子,但是标记的答案并没有太多细节。我什至不知道从哪里开始。我应该研究缓存(ETag,最后修改)还是某种形式的握手?
客户端设备上装有.Net Compact Framework 3.5,并且正在通过其Web API 2端点访问服务器。
如果有人可以指出正确的方向或提出任何建议,将不胜感激。谢谢。