问题 使用64位框架构建我的.NET应用程序有什么好处吗?


我们使用msbuild在专用于构建的服务器上构建我们的.NET应用程序。我们正在迁移到具有64位Windows 2003的新硬件。我可以使用Framework64中的64位版本的msbuild构建应用程序,或者我可以使用Framework中的32位版本构建它。使用64位版本的msbuild构建是否有任何优势?


3128
2018-04-09 12:22


起源



答案:


不是特别没有。唯一真正的优势是64位版本的msbuild将能够利用更多的地址空间。这真的是关于它。


10
2018-04-09 12:25



不相关(并且可能保证自己的问题),但是有没有理由你知道32Bit msbuild.exe会成功构建但是64Bit版本会因System.AccessViolationException而失败? - Justin Niessner
我遇到了同样的事情。 Framework64 / Msbuild在GenerateSerializationAssemblies上失败,并出现Out of Memory异常。 - Dan Solovay


答案:


不是特别没有。唯一真正的优势是64位版本的msbuild将能够利用更多的地址空间。这真的是关于它。


10
2018-04-09 12:25



不相关(并且可能保证自己的问题),但是有没有理由你知道32Bit msbuild.exe会成功构建但是64Bit版本会因System.AccessViolationException而失败? - Justin Niessner
我遇到了同样的事情。 Framework64 / Msbuild在GenerateSerializationAssemblies上失败,并出现Out of Memory异常。 - Dan Solovay


不,但可能存在一些缺点......如果您的应用程序使用任何第三方驱动程序,请确保它们也符合64位。我们遇到了一个问题,我们将旧的应用程序转换为.net并在Build-> General上保留了默认的“Platform Target:Any CPU”设置,并且当我们将它移动到应用程序时,应用程序在其开发机器上运行良好它死了64位服务器。花了一些时间将它追溯到我们需要与外部数据源连接的第三方ODBC驱动程序。应用程序DID在64位平台上工作,我们只需要为CPU指定x86就可以达到目的。


2
2018-04-09 12:27





如果MSBuild正在运行依赖于x64库的测试;或者如果您的构建过程需要加载本机x64库,则需要使用msbuild x64。

我们不得不使用msbuild x64,因为我们正在运行xunit测试和一些库  是x64,因为它们调用本机x64库。

从理论上讲,我们可以使用不同的测试运行器来启动x64进程来运行测试;但使用msbuild x64是最简单的。

如中所述 https://xunit.github.io/docs/running-tests-in-msbuild.html :

你可以使用 <exec> 在MSBuild中运行控制台运行程序的任务。如果您需要在32位到64位环境中更多地控制运行测试,则可以选择使用控制台运行程序。使用MSBuild运行器时,您只能使用用于运行构建的MSBuild可执行文件的位数选择。

请注意,这与编译无关 - 我们可以使用msbuild x86构建我们的x64专用项目。


2
2018-03-02 04:16





如果你要做asp.net,一个很大的优点是IIS可以访问更多的内存,这为你提供了更多的可扩展性。

点不是岩石的人做了这个节目
http://www.dotnetrocks.com/default.aspx?showNum=341 

有很多非常好的信息。


1
2018-04-09 19:51



我不是在问我是否应该在64位框架下运行我的应用程序。我问的是使用64位框架(Framework64下的msbuild.exe)构建我的应用程序是否有任何优势。 - Dan Finucane
是的,如果您在64位环境中运行应用程序时获得更多内存,那么它是32位应用程序,但是当您将其编译为64位时,您会获得更多内存 - Bob The Janitor


Biztalk互操作程序集是一个非64位能力的程序集的一个很好的例子。因此在进行此类移动时/之后再次进行测试和测试。


0
2018-04-09 13:24



我不是在问我是否应该在64位框架下运行我的应用程序。我问的是使用64位框架(Framework64下的msbuild.exe)构建我的应用程序是否有任何优势。 - Dan Finucane