草庐IT

c# - 解码/解密期间 Base-64 字符数组的长度无效

问:我面临以下大问题:我不时发现以下异常:Base-64字符数组的长度无效我使用加密和解密:publicstaticstringEncrypt(stringtext){try{key=Encoding.UTF8.GetBytes(stringKey.Substring(0,8));DESCryptoServiceProviderdes=newDESCryptoServiceProvider();Byte[]byteArray=Encoding.UTF8.GetBytes(text);MemoryStreammemoryStream=newMemoryStream();CryptoStr

c# - BadImageFormatException x64 问题

我发誓Microsoft对VisualStudio的“进化”越多,整个过程就越无知。我有一个包含3个类库的Windows服务。我进入每个类库的属性并将平台目标设置为x64。我对Windows服务以及我添加的测试控制台项目执行了同样的操作以验证所有内容。我可以在我的Windows2008R2x64服务器上运行控制台应用程序,没有任何问题,但是愚蠢的安装程序不断地爆炸并告诉我我的形象不好。我确实确保已将安装程序的目标平台设置为x64。我不知道这个愚蠢的东西会被炸毁,真的很感激任何见解。我确实引用了其他DLL,这些DLL可能是x86,但我认为如果正确设置了主库,事情就会起作用......

c# - Assert.AreEqual 对 int 和 ulong 失败但对 long 和 uint 失败

好吧,我希望我的处理器没有烧毁,因为:[TestMethod]publicvoidtenEqualten(){Int64a=10;UInt32b=10;Assert.AreEqual(a,b);}工作得很好,但是这个:[TestMethod]publicvoidtenNotEqualten(){Int32a=10;UInt64b=10;Assert.AreEqual(a,b);}惨败。你有没有得到相同的结果,还是只有我?如果是,有什么想法,为什么?如果这是.Net4.5的已知问题,那么抱歉垃圾邮件,但我找不到它作为错误。编辑:我找到了重复的here和解释here

c# - 如何在 C# Express 中选择 32 位或 64 位构建?

当我尝试在C#Express2008中构建我的解决方案时遇到问题。我需要为32位架构构建它,但它总是为64位构建。在VisualStudio2008中,我可以选择体系结构,但在C#Express中找不到此选项。有没有办法在C#Express中做到这一点? 最佳答案 在完整的VisualStudio中查看项目文件中的差异,并手动对C#Express项目进行相同的编辑-VS将尊重这些更改,即使它不允许您进行它们来自IDE。编辑:正如Jeff在评论中指出的那样,如果您转到“工具”->“选项”,请勾选左下角的“显示所有设置”框。然后在“项目

c# - 两者之差 'uint'

当您尝试在C#.NET中声明一个值超出其值范围的无符号变量时,它会被标记为编译器错误,但如果您在运行时生成负值并在运行时将其分配给该变量,则该值会换行.uintz=-1;//Willnotcompileuinta=5;uintb=6;uintc=a-b;//Willresultinuint.MaxValue无符号变量在这种情况下换行而不是抛出异常是否有充分的理由?谢谢。 最佳答案 在C#中声明一个未分配的变量不会被标记为错误-尝试为变量分配无效值是。例如,这是一个在声明后未明确分配(假设它是本地的)的变量:uintz;-1不是uin

c# - 无法添加类型为 'filter' 且唯一键属性 'name' 设置为 'ASP.Net_4.0_64bit' 的重复集合条目

我遇到这个问题已经有一段时间了。当我打开一个指向我的本地主机的asp.net页面时,就会发生这种情况。我正在运行带有visualstudio2012和iis7.5的Windows2008r2。它显示的配置源是这样的。:1451:1452:1453:它表明它在第1452行出错。最初,这是inetsrv32位和64位位置的applicationHost.config文件中的一个问题。我进去并删除了重复的4.0条目,它工作了好几个月。然后它又开始抛出这个错误。那时我刚刚完全重新安装了IIS,我的应用程序又开始工作了。此错误再次开始出现,我再次执行了IIS的完全重新安装,但这次没有帮助,我的应

c# - 在 x86 系统上编译 C# .NET x64 二进制文件

我有一个C#项目,其中包含对ScintillaNET的引用。不幸的是,ScintillaNET喜欢检测机器的架构并根据运行的架构加载nativeDLL。这意味着我的项目必须预编译成x86和x64版本(由于上述检测,我无法使用任何CPU)。问题是我的构建服务器是x86-only。有没有一种方法可以在x86机器上以x64模式编译.NET程序集?据我所知,切换只是强制计算机加载所需体系结构的程序集,并且在编译时实际上不会输出任何体系结构相关的代码,但是,在构建服务器上的Mono2.10.6下编译时我得到如下错误:“错误CS0016:无法写入文件‘ScintillaNet’,原因:AMD64”

c# - 64 位图像颜色声明(每 channel 16 位)

在C#中,我可以毫无问题地声明新的48bitRGB或64bitRGBA,事实上正确的格式保存在磁盘上。但是,在声明颜色时,我无法声明超过8位值的颜色。这似乎是因为Color声明要求每个组件不超过8位。我目前的代码:intx;inty;intw=512,h=512;Bitmapimage=newBitmap(w,h,System.Drawing.Imaging.PixelFormat.Format48bppRgb);//Newimagewith16bitperchannel,noproblem//Double'for'controlstructuretogopixelbypixelont

c# - x64 平台上调试器中奇怪的三元运算符行为

我在我的C#代码中使用了一个非常简单的三元表达式:helperClass.SomeData=helperClass.HasData?GetSomeData():GetSomeOtherData();在这两种情况下,表达式的每个路径上的函数都返回一个非空对象,但如果我在调试器中查看结果,它是空的,直到我在代码中引用它,例如使用断言:Debug.Assert(helperClass.SomeData!=null);只有在Debug模式下使用“x64”或“任何CPU”平台设置时才会出现这种情况。在“x86”模式下没问题。在假设我在编译器或调试器中发现错误之前,我尽量保持谨慎,但我找不到对此行

c# - 从 64 位 exe 访问 32 位 DLL 的方法

我有一个项目必须在64位模式下编译和运行。不幸的是,我需要调用仅在32位模式下可用的DLL,因此我无法将所有内容都放在一个1VisualStudio项目中。我正在努力寻找将32位DLL包装在其自己的exe/服务中并从我的64位应用程序发出对该exe/服务的远程(尽管在同一台机器上)调用的最佳方法。我的操作系统是Win7Pro64位。此32位进程所需的调用是每秒几十次,但数据量很小。这是一个实时图像分析应用程序,因此尽管数量很少,但响应时间至关重要。大量发送/接收单个原语。理想情况下,我会托管一个WCF服务来容纳这个DLL,但在64位操作系统中,不能强制该服务以x86运行!Source.