【发布时间】:2009-04-09 12:22:04
【问题描述】:
我们使用 msbuild 在专用于构建的服务器上构建我们的 .NET 应用程序。我们正在迁移到具有 64 位 Windows 2003 的新硬件。我可以使用在 Framework64 中找到的 64 位版本的 msbuild 构建应用程序,或者我可以使用在 Framework 中找到的 32 位版本来构建它。使用 64 位版本的 msbuild 构建有什么优势吗?
【问题讨论】:
我们使用 msbuild 在专用于构建的服务器上构建我们的 .NET 应用程序。我们正在迁移到具有 64 位 Windows 2003 的新硬件。我可以使用在 Framework64 中找到的 64 位版本的 msbuild 构建应用程序,或者我可以使用在 Framework 中找到的 32 位版本来构建它。使用 64 位版本的 msbuild 构建有什么优势吗?
【问题讨论】:
不是特别没有。唯一真正的优势是 64 位版本的 msbuild 将能够利用更多的地址空间。就是这样。
【讨论】:
不,但可能有一些缺点...如果您的应用程序使用任何 3rd 方驱动程序,请确保它们也符合 64 位标准。我们遇到了一个问题,我们将旧应用程序转换为 .net,并在 Build->General 上保留默认的“平台目标:任何 CPU”设置,而当我们将应用程序移到其开发机器上时,它运行良好一个64位服务器它死了。我们花了一些时间将其追溯到我们需要与外部数据源交互的第 3 方 ODBC 驱动程序。应用程序 DID 在 64 位平台上工作,我们只需要为 CPU 指定 x86,这有点违背目的。
【讨论】:
如果 MSBuild 正在运行依赖于 x64 库的测试;或者如果您的构建过程需要加载本机 x64 库,则需要使用 msbuild x64。
我们必须使用 msbuild x64,因为我们正在运行 xunit 测试,而我们的一些库必须是 x64,因为它们调用原生 x64 库。
理论上,我们可以使用不同的测试运行程序来启动 x64 进程来运行测试;但是使用 msbuild x64 是最简单的。
如https://xunit.github.io/docs/running-tests-in-msbuild.html 中所述:
您可以在 MSBuild 中使用
<exec>任务来运行控制台运行程序。如果您需要更多地控制在 32 位和 64 位环境中运行测试,您可以选择使用控制台运行程序。使用 MSBuild 运行程序时,您只能选择用于运行构建的 MSBuild 可执行文件的位数。
请注意,这与编译无关 - 我们可以使用 msbuild x86 构建仅 x64 的项目。
【讨论】:
如果你打算做 asp.net 的一大优势是 IIS 可以访问更多的内存,这给了你更多的可扩展性。
The dot not Rocks 伙计们对此做了一个节目
http://www.dotnetrocks.com/default.aspx?showNum=341
上面有很多非常好的信息。
【讨论】:
Biztalk 互操作程序集是不支持 64 位的程序集的一个很好的示例。因此,在做出这样的举动时/之后再次测试和测试。
【讨论】: