Tag: 64bit

以64位运行测试

我有一个编译为64位的ADO.NET驱动程序。 因此,我需要在64位模式下运行mstests。 那可能吗? (开发机器是64位)。

由NUnit项目引起的System.BadImageFormatException

今天是个好日子。 我整天都在工作中遇到同样的问题,并且正在努力寻找任何新的路径。 当我的解决方案在服务器上构建时,我收到以下错误。 我在解决方案中运行/调试所有测试没有问题,并且构建正常。 服务器和我的电脑都是x64。 我已经遵循了许多建议,但我发现这些建议都无济于事。 在所有配置下,我已将Platform Target设置为x86,用于我的解决方案中的所有项目。 我知道有一个nunit-console-x86.exe可能会有所不同,但我不知道在代码中指定这个位置。 请注意我已经开始上网了,如果我错过了什么,请道歉。 System.BadImageFormatException:无法加载文件或程序集 ‘Spin.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’或其依赖项之一。 尝试加载格式不正确的程序。 文件名:’Spi​​n.TradingServices.DataAcquisition.Test.NUnit,Version = 1.0.12103.2060,Culture = neutral,PublicKeyToken = null’ 服务器堆栈跟踪:System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)在System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence) assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection,Boolean suppressSecurityChecks)位于NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)的System.Reflection.Assembly.Load(AssemblyName assemblyRef),位于NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName)位于NUnit.Core.Core.Tore上的NUnit.Core.Tore.Core.TestSuiteBuilder.Build(TestPackage包)的NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage包)中的NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName,String testName,Boolean autoSuites)上的布尔autoSuites) NUnit.Core.Proxy的.Core.SimpleTestRunner.Load(TestPackage包) 在System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object []的NUnit.Core.moreTestRunner.Load(TestPackage包)的NUnit.Core.ProxyTestRunner.Load(TestPackage包)上的TestRunner.Load(TestPackage包) System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)中的args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object […]

Microsoft.Jet.OLEDB.4.0替代MDB文件上的64位访问

我有许多其他问题,我无法使用Microsoft.Jet.OLEDB.4.0从我的64位计算机访问Microsoft Access(MDB文件)。 我知道它没有64位版本,我需要针对x86进行编译。 所以我的问题是:你知道任何其他支持64位访问的.NET Access for Microsoft Access吗?

C#ReadProcessMemory:如何读取64位内存地址?

我正在阅读应用程序内存。 我正在使用CheatEngine获取内存地址,然后尝试返回它的值。 但是,CheatEngine似乎返回64位内存地址,所以我的ReadProcessMemory函数不断告诉我,每当我输入地址时它都不能将’long’转换为’int’。 我发现的所有教程似乎都基于00AB5678的内存地址,但我得到的更像是D3569227FC。 所以我的问题是,如何将ReadProcessMemory与更大的内存地址一起使用? 这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using System.Diagnostics; namespace ConsoleApplication1 { class Program { const int PROCESS_WM_READ = 0x0010; [DllImport(“kernel32.dll”)] public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId); [DllImport(“kernel32.dll”)] public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer, int dwSize, […]

64位SQLite.dll和任何CPU

经过一段时间的努力来解决这个问题后,我终于决定在这里发帖提问。 几天前我在sqlite论坛上发布了同样的问题,但该网站目前无法使用。 http://sqlite.phxsoftware.com/forums/t/2669.aspx 所以,这里有一个问题:我有64位计算机和64位操作系统。 一位同事拥有64位计算机和32位操作系统。 我们开发了一个Web应用程序,它从服务器中获取大量数据并将其保存在内存SQLite数据库中,因此一切都可以更快地运行。 现在我们在两台机器上使用32位SQLite.dll。 但是我们想要切换到64位dll(并增加我们可以使用和存储的数据量)。 我从http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下载了以下文件:sqlite-dotnet-x64-1007300.exe并在我的机器上安装了。 我已将System.Data.Sqlite.dll和System.Data.Sqlite.Linq.dll放入lib文件夹,而我已将Sqlite.Interop.dll复制到bin \ Debug文件夹中。 当我使用Any CPU调试应用程序时,一切都在我的机器上工作正常,但是,我的同事正在收到错误。 我想使用64位dll并使用任何CPU构建exe文件,如果系统是32或64则不用担心。这可能吗? 如果这是我应该做的事情呢? 提前致谢! PS我们使用C# – Visual Studio 2008 3.5 SP1

如何从C#项目的构建事件访问Visual Studio解决方案级平台?

我们有一个大型的VS 2010解决方案,主要是C#代码,但有一些本地DLL,各种C#项目依赖(包括我们的unit testingDLL)。 我们正在尝试支持32位和64位版本的库。 所以我们现在将本机DLL构建为32位和64位。 问题是我们的很多C#项目都有后期构建事件,它们将所需的本机DLL复制到项目的TargetDir中。 现在我们有两个不同版本的本机DLL(32位和64位),我需要能够指定正确的dir来复制本机DLL。 我原本以为我可以简单地在路径中使用$(Platform),如下所示: copy $(SolutionDir)\NativeDll\$(Platform)\$(Configuration) $(TargetDir) 但这不起作用,因为$(Platform)是项目的平台,而不是解决方案级平台。 在这种情况下,$(平台)是“任何CPU”。 从我看到的C#项目中的后期构建事件宏看,似乎没有办法访问正在构建的解决方案级平台。 有没有更好的方法来实现我的目标?

对于64位计算机,Crystal Report无法打开

我的报告在32位机器上工作正常但不会在64位上打开。 需要64位,因为在其中一个屏幕上加载数据会导致内存问题 – 因此无法在32位上运行。 Windows 10 64位 已安装的Crystal Reports 尝试安装13.0.20(最新)并重新启动PC但没有工作。 应用程序目标框架4.6.2(我甚至尝试过4.0但同样的错误) 使用Visual Studio 2017社区(尝试VS 2015) 平台x64(不是AnyCPU) 通过传递DataTable生成报告,报告中没有活动连接或ConnectionString 错误信息 编辑#1 Web.config包含useLegacyV2RuntimeActivationPolicy=”true” x86和x64中的DataTable是相同的 编辑#2 显示报告的源代码是 CrystalDecisions.CrystalReports.Engine.ReportClass c = new CrystalDecisions.CrystalReports.Engine.ReportClass(); c.FileName = System.IO.Path.Combine(Root_Path, “Reports”, “Prod”, mFileName); c.Load(); c.SetDataSource(dt); // dt => DataTable c.SetParameterValue(“prmSystemDate”, Current_Date); frmReportViewer v = new frmReportViewer(); v.ReportClass = c; v.Show(); 而frmReportViewer FormLoad是 private void […]

在64位计算机上运行32位C#应用程序

如何强制我的应用程序在64位计算机上以32位运行? 代码是用C#编写的。

如何编译我的64位应用程序使其更快或更好?

我使用C#,.NET,VS.NET 2008。 除了能够处理更多内存外,将我的应用程序编译为64位有什么好处? 会更快还是更小? 为什么? 它是否使它与x64系统更兼容(与32位应用程序相比)?

在x64和x86上,entity framework的旋转速度要慢得多

我的同事昨天发布了这个问题: 即使对于微小的DbContext,7秒的EF启动时间 。 在获取代码并将其移至单独的解决方案以尽可能地隔离它之后,我发现包含项目的平台目标对EF启动过程的运行时有深远的影响。 当针对x64时,我看到测试需要大约7秒来启动第一个DbContext并且<1秒来启动第二个DbContext(与我的同事的调查结果一致,也是针对x64)。 但是,当我将平台目标切换到x86时,第一个DbContext旋转时间减少了大约4秒,减少到3.34633秒,而第二个DbContext花费了与x64情况相同的时间。 鉴于此,当针对64位系统和32位系统时,entity framework似乎正在经历一个完全不同的初始化过程。 有没有人能够深入了解引擎盖下的内容来解释这一点?