Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
64位asp.net的编程_.net_Asp.net_64 Bit - Fatal编程技术网

64位asp.net的编程

64位asp.net的编程,.net,asp.net,64-bit,.net,Asp.net,64 Bit,给出了一个Windows Vista的.NET 3.5编程和客户端使用环境。在以下情况下,64位操作系统的编程意味着什么?请指定是否存在功能或优化问题,即它是否会工作以及能否在64位环境中更好地工作 1) 您正在开发一个web应用程序(asp.net c#) 2) 您正在开发win forms业务应用程序(无驱动程序级别) 3) 您正在开发一个硬件控制器 我原以为案例1或案例2没有区别,案例3可能有一些警告。但我对缺乏对64位VPN的支持感到困惑。。。一定有什么问题。对于#1,几乎一直都没有区别

给出了一个Windows Vista的.NET 3.5编程和客户端使用环境。在以下情况下,64位操作系统的编程意味着什么?请指定是否存在功能或优化问题,即它是否会工作以及能否在64位环境中更好地工作

1) 您正在开发一个web应用程序(asp.net c#)

2) 您正在开发win forms业务应用程序(无驱动程序级别)

3) 您正在开发一个硬件控制器

我原以为案例1或案例2没有区别,案例3可能有一些警告。但我对缺乏对64位VPN的支持感到困惑。。。一定有什么问题。

对于#1,几乎一直都没有区别。我在32位机器上开发并部署到64位服务器场的大型.NET web应用程序上工作。我们遇到的唯一问题是TFS——与之没有直接关系


对于#2(在某种程度上是#3,因为它涉及到调用非托管代码的一般主题),一个好的答案是。

对于1没有区别。二,。除非您特别要求针对特定平台构建二进制文件,.Net工具将编译为IL,并在运行时将其JIT到实际平台。即使您在安装时正在重新设置应用程序,在大多数情况下,它也不会影响您的开发过程

然而,在32位机器上开发时,在使用p/Invoke、COM互操作或注册表访问时,针对64位目标,有两个注意事项。默认情况下,应用程序将作为目标系统的本机应用程序进行JIT,因此:

  • 对32位dll的P/Invoke将无法在64位目标系统上加载dll,同时可以在32位开发人员机器上愉快地工作
  • COM互操作将失败,目标64位计算机上的32位inproc对象未注册类。32位进程外对象可能会工作,这取决于它们在64位计算机上的注册方式。同样,在您的32位开发人员机器上,一切都将正常工作
  • 对32位应用程序注册表项的注册表访问将在您的开发人员机器上工作,但会写入64位目标系统上的其他位置
您可以通过强制您的应用程序为32位来解决这些问题,尽管这适用于列表中的场景2

就驱动程序而言——我不确定您是否真的可以使用.Net编写Windows驱动程序,至少我在这方面没有太多经验(我编写的上一个Windows驱动程序是在1993年针对Windows 3.11:-)。但如果你能:

  • 上述问题同样适用
  • 直接访问内存时,请注意32位和64位之间的不同寻址(始终使用64位指针)
  • 遵循Windows驱动程序工具包文档中的最佳实践

除了Franci的答案之外,请注意一些更抽象的资源也会引发问题

我通常使用仅32位的ODBC驱动程序进行开发,并且必须强制所有应用程序以32位进行编译

哦,不要让我开始谈论VPN客户端和糟糕的64位支持!一个关于网络公司的天花