代码之家  ›  专栏  ›  技术社区  ›  Daniel Auger

团队正在从xp32到xp64进行.NET开发-有什么进展吗?

  •  6
  • Daniel Auger  · 技术社区  · 16 年前

    我的团队正在开发新的XP64工作站。到目前为止,我们一直在使用xp32。我们的大部分工作是在托管C/VS2008/.NET 3.5和SQL Server 2005中完成的。但是,我们有几个应用程序仍然在vs2005/.net 2.0中。我们的大多数应用程序是在64位服务器上运行的ASP.NET WebForms应用程序和WCF服务。但是,我们正在进行一些WPF开发,必须在32位机器上运行。

    有没有我们应该意识到的问题或过渡痛苦?

    12 回复  |  直到 15 年前
        1
  •  7
  •   scwagner    16 年前

    如果您引用的是为32位编译的任何第三方DLL,那么您必须以32位为目标应用程序。这可以通过更改项目设置或使用 corflags 带/32位+参数的应用程序。

    在作为开发工作站的xp x64的许多月中,我遇到的唯一“gotcha”是在64位应用程序的Visual Studio调试器中,“编辑并继续”不起作用。

        2
  •  3
  •   Spence    16 年前

    这要看情况而定。

    您在代码中使用了p/invoke吗?

    您是否使用了非托管代码并对其进行了数据整理?如果是这样的话,你就必须用一把细梳子来检查这段代码:(。

    但是,如果您的代码是纯C(它没有使用P/Invoke),那么您应该看到的唯一区别是性能略有提高,内存性能更好:)。

    但是,您可能会遇到gremlins,为您的开发机器寻找驱动程序。

    如果您有一些32位代码,那么也许您可以创建一个到它的WCF接口(命名管道非常、非常快),并使用它与32位服务通信。我知道在64位进程中不能有32位代码,但是我认为你可以打开32位进程的管道,除非我弄错了。在这种情况下,您可以始终使用TCP/IP。可以避免您重写系统中的关键代码,并允许您使用wow64或vm来处理迁移问题。

        3
  •  3
  •   yfeldblum    16 年前

    您将无法从.NET x64与MS Access数据库通信,因为没有x64 Jet驱动程序。

    我认为这是搬到X64的一个很好的理由。

        4
  •  3
  •   community wiki 9 revs lsalamon    7 年前

    希望这有帮助

    Registering COM 32 bit DLL for asp 64 bit call

    Many links about convention 32-64 bits

    General FAQs About 64-bit Windows

    64-bit System Design

    也可以看到这些提示 Biggest performance improvement you’ve had with the smallest change?

    更多精彩的博客提示: Back to Basics: 32-bit and 64-bit confusion around x86 and x64 and the .NET Framework and CLR

    Windows Application Quality Cookbook from Microsoft

    DevReadiness.org
    此站点致力于帮助Windows ISV生态系统为平台的新版本开发高质量的应用程序。Windows7最近在2008年的pdc会议上宣布,右边提供了新的应用程序就绪“食谱”链接。

    微软公司的运营人员已经在博客中介绍了他们迁移到X64的过程,以及所有这些过程的工作原理。
    Running Microsoft.com on 64 Bit…The Dependencies, The Goodness, the Gotcha’s

        5
  •  2
  •   cdonner    16 年前

    去年我用过64位XP几个月了。我的经验是,Microsoft开发堆栈的安装和运行没有任何问题,包括64位版本的SQL Server。

    我在ASUS板上的Marvell Yukon网卡上遇到了网络驱动程序问题。64位驱动程序存在严重问题,这些问题并不立即明显,但经过几个月的激烈测试后变得明显。千兆网络上的网络传输速率与预期不符,当两个进程访问同一网络资源时,Windows将崩溃。

    我的建议是,就像其他海报建议的那样,在切换整个团队之前测试硬件软件设置。这更有可能是你看到问题的地方。

        6
  •  2
  •   Adrian    16 年前

    我在64位平台上开发已经有一段时间了。这是一个小提示,可以帮你减轻头痛。

    如果你得到例外

    “BadImageFormatException”(例如,“可以 不加载或组装 'Microsoft.TeamFoundation等或 它的一个依赖项。尝试 是用来加载程序的 格式不正确“)

    应用程序很可能找不到该程序集的64位版本。

    在使用OLEDB/Jet驱动程序访问数据库时,我们经常遇到此错误。我还体验过与TFS集成的工具。

    要解决此问题,请转到“项目设置”、“高级编译选项”下的“编译”选项卡,然后选择“x86”作为目标CPU。

    希望这有帮助!

        7
  •  1
  •   user65673    16 年前
    • 混合模式调试是一个问题,如果 你可以使用任何C++和C 64位的应用程序。
    • 仍然有许多开发工具不支持在Windows x64上运行或不支持使用64位二进制文件。例如,Compuware DevPartner。它目前只支持32位应用程序开发,但应用程序本身将在64位Windows上运行。
        8
  •  1
  •   Nicolas Dorier    16 年前

    TFS不支持64位(TFS服务器,不确定团队资源管理器)

        9
  •  1
  •   Paul Suart Wes    15 年前

    您可能会遇到string.gethashcode()的问题,因为32位和64位计算机上相同的字符串返回不同的值,因为它们将运行不同版本的clr。

    至关重要的是:

    _156; GetHashCode的行为取决于它的实现,它可能会从一个版本的公共语言运行库更改为另一个版本。发生这种情况的原因是为了提高gethashcode.__的性能。

    更多信息 here here .

        10
  •  1
  •   jinsungy    15 年前

    有两套 ODBC数据源 (DSN)现在:32位和64位。某些数据库当前没有64位的更新驱动程序,因此您将被迫使用32位驱动程序,或者您可以等待。

        11
  •  1
  •   JMarsch    15 年前

    我们遇到了两种不同类型的问题:

    1. 我们有一个第三方组件封装了本机32位DLL。供应商没有提供64位版本,所以我们必须以32位开发为目标。

    2. 一些驾驶员的问题。xp-64并没有完全流行(现在流行了吗?)当我们尝试的时候。这些问题与开发无关,但我们在打印机驱动程序、网络驱动程序等方面遇到了一些问题)。在Vista中,他们改变了驱动程序的型号,所以现在可能有更多的64位驱动程序,但是我不知道它们是否会与XP向后兼容。

        12
  •  0
  •   vdsf    16 年前

    孙有一篇关于它的好文章。 http://developers.sun.com/solaris/articles/ILP32toLP64Issues.html

    对于当前的32位,这是正常的 应用程序假定int 类型、长类型和指针是 大小相同。因为长的尺寸 以及lp64数据中的指针更改 模型,仅此变化就是 ILP32-to-LP64的主要原因 转换问题。

    推荐文章