在.NET Compact Framework 2.0 SP2中将换行符插入字符串的最佳做法是什么?
在我的Windows CE 6.0应用程序中,我正在与一个返回错误标头信息的专有Web服务器设备进行通信(更具体地说,它返回NO标头信息).
我相信缺少标头信息是我的HttpWebRequest方法无法正常工作的原因.
我记得.NET"常规"框架允许我们以编程方式配置System.Net.Configuration程序集以允许无效的标头(useUnsafeHeaderParsing).
不幸的是,对我来说,System.Net.Configuration程序集不包含在Compact Framework中.
CF中是否有类似的配置,允许我们以编程方式允许无效的标头?
我有 2 种形式:B 继承了 A。
如果我在 B 上添加 InputPanel 控件,我没有问题。如果我在 A 和 B 上添加 InputPanel 控件,我没有问题。但是如果我只在 A 上添加 InputPanel 控件,我将无法打开表单 B 的设计器。
错误是:
无法加载文件或程序集“Microsoft.WindowsCE.Forms, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
我读了很多关于这个的东西,但没有找到解决这个问题的方法。似乎Microsoft.WindowsCE.Forms.dll只有当输入面板处于基本形式时,设计器才能加载 dll 。
我试过 :
编译我的项目没有任何问题。
谢谢你的时间
编辑:重新启动修复它。我不知道是我做了什么然后重新启动..还是只是重新启动。现在我可以在设计器中打开任何表单。
在我的工作中,我们通过加密来保护数据,并且该数据由 .NET Compact Framework 加密,并且必须由服务器上的常规 .NET 框架读取。我们遇到了一个问题,即紧凑框架无法使用已知公钥的 RSA 进行加密(引发异常)。服务器将公钥传递给紧凑框架设备。下面是为紧凑框架编写的测试应用程序以显示问题。
string mod =
"rgTcL0/ZK3j5Rt6CigEsfyLDiERh2PuVzmZVdHbb/2jQOG5JEcAqqBoscDZ4PwJR8aO19xNVTce7"
+ "vzbEued32z2PLAvCcHFKGtOgNEeZ+ZcD6uHobsKws76BdjBrI7Pigk2HSkak21n2WoVcBVHoRmcn"
+ "eX7DPaB4atamhkbLoRBF1VlautDfhX9lnOFA2zyZUCB5CproavKF6wl19pZne2Q4U1vMtBAA2Q9N"
+ "aZFsrj/KjE3UtYKvjd4Oy55Hmtpb5P3CZAVpiyCTKq3gTxDJn69giyctu428DgkKacmZ4yTvkLWB"
+ "Ym/zWtAf9o8pI+3MwgF7wzuK5ypGack3l4/Skw==";
string exp = "AQAB";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048);
RSAParameters p = new RSAParameters();
p.Modulus = Convert.FromBase64String(mod);
p.Exponent = Convert.FromBase64String(exp);
rsa.ImportParameters(p);
var bytes = rsa.Encrypt(System.Text.Encoding.ASCII.GetBytes("MIKE"), true);
Run Code Online (Sandbox Code Playgroud)
当调用“Encrypt”方法时,此代码会产生以下异常:
Framework: 3.5.7283.0
Exception: fOAEP
InnerException: Could not evaluate expression
Stack Trace:
at System.Security.Cryptography.RSACryptoServiceProvider.Encrypt
(Byte[] rgb, Boolean fOAEP)
Run Code Online (Sandbox Code Playgroud)
有谁知道我还应该尝试/做些什么?我已经用常规 .NET 编写了这段代码,并且运行得很好。我可以使用不同的实例进行加密和解密。任何帮助,将不胜感激。
谢谢!
我正在尝试使用 coredll.dll 中的 waveOutSetVolume 逐渐将音频音量从静音(或接近静音)增加到最大。
我发现的大多数代码示例都显示了一些预定义的关闭、低、正常、中、高和非常高的设置点,如下所示:
Public Enum Volumes As Integer
OFF = 0
LOW = 858993459
NORMAL = 1717986918
MEDIUM = -1717986919
HIGH = -858993460
VERY_HIGH = -1
End Enum
Run Code Online (Sandbox Code Playgroud)
在我的尝试中,我尝试使用 1200 作为我的增量从 0 逐步提高音量。这只会增加右声道的音量。在 66000 左右的某个地方,所有音频都恢复静音并再次开始增加,但仅在正确的通道上。
正如我所希望或预期的那样,上面列出的常量确实会影响两个通道。但是我不清楚如何逐渐从 0 过渡到 858993459,然后再逐渐从 858993459 过渡到 1717986918,等等。
我怀疑从根本上我不明白这是如何工作的。
我在 Visual Studio 2008 中使用 VB.Net 和 .Net Compact Framework 3.5。如果你有 C# 的解决方案,我没问题。
编辑:
根据我现在阅读的内容,上面列出的枚举值基于十六进制,其中 00000000 是可能的最低音量,FFFFFFFF 是可能的最高音量。这仍然对我没有多大帮助,因为我不确定如何在 VB.Net 中逐渐增加十六进制并同时将其转换为整数。我也不清楚仅在此处增加 Hex 是否会导致所有/两个通道的音量同时增加,或者我是否仍然存在立体声问题。
我正在使用这个类:
Public Class VolumeControl
<DllImport("coredll.dll", SetLastError:=True)> _
Friend Shared Function waveOutSetVolume(ByVal device …Run Code Online (Sandbox Code Playgroud) 我最近接管了使用.NET紧凑框架为移动设备编写的代码库的责任,我看到代码Dispose()遍布整个地方.
这似乎是在
我以为垃圾收集器会处理内存管理.我知道他们可能会在没有内存的情况下暂停一下Dispose(),但这些电话有多大优势或好处?它似乎污染了代码的整洁.
所以我有一个包含 120 个项目的大型 c# 解决方案。该解决方案不包含用户界面,并且经过编译以支持紧凑框架和完整框架。该解决方案采用 Visual Studio 2005 格式。
我想删除对 Windows CE 的支持并将其全部转换为面向完整框架并在 Visual Studio 2010 中打开它。
我想要做的是从整个解决方案中删除对紧凑框架的支持。
我应该如何进行?是否可以将项目转换为完整的框架?
谢谢你。
我正在尝试对我们的旧版 .NET Compact Framework 3.5 应用程序(在 Windows CE/Windows 移动设备上运行的仓库应用程序)进行一些开发。
在 Visual Studio 2008 中打开项目时,出现此错误:
未找到导入的项目“C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.CSharp.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。
我认为这是由于缺少“Power Toys for .NET Compact Framework 3.5”造成的,这可能是最近升级到 Windows 2004 时删除的。
此软件包可在以下 URL 获得:https : //www.microsoft.com/en-us/download/details.aspx?id=13442
不过微软好像已经删除了,网上也找不到镜像。
有没有人有这个包的副本,可以下载?
我正在尝试使用StreamReader读取文件的内容,StreamReader接收FileStream.该文件中有一些空格(char 32),StreamReader将它们读为0(char 48).屏幕截图显示了FileStream缓冲区和StreamReader缓冲区.两者都有值32,但是当我调用Read()时,它返回48.我错过了什么吗?顺便说一句,代码在.NET Compact Framework下运行.
alt text http://www.freeimagehosting.net/uploads/9f72b61bbe.png
读取数据的代码:
public void Read() {
using (StreamReader reader = new StreamReader(InputStream, Encoding.UTF8)) {
foreach (var property in DataObject.EnumerateProperties()) {
OffsetInfo offset = property.GetTextOffset();
reader.BaseStream.Position = offset.Start - 1;
StringBuilder builder = new StringBuilder(offset.Size);
int count = 0;
while (reader.Peek() >= 0 && count < offset.Size) {
char c = (char)reader.Read();
if ((int)c != 32 && c != '\r' && c != '\n') {
builder.Append(c);
count++;
} else {
reader.BaseStream.Position++;
}
}
property.SetValue(DataObject, …Run Code Online (Sandbox Code Playgroud) 这该怎么做:
当我按下'G'我的表格中的文本框时,我会看到'A' ?
在C#代码中(windows-CE或Windows-mobile)
提前致谢
c# ×6
.net ×4
windows-ce ×3
vb.net ×2
designer ×1
dispose ×1
encryption ×1
handheld ×1
reference ×1
stream ×1
streamreader ×1