【发布时间】:2013-04-01 15:38:11
【问题描述】:
我正在使用 Visual Studio 2010 构建一个同时具有 x86 和 x64 目标的 c# 项目。当我使用 IDE 构建时,我得到了 x64 和 x86 目标的正确结果。
当我在命令行上使用 msbuild 时,我得到的一切都是在 x86 中构建的,即使我在命令行上指定了 x64。
在我从 .Net 4.0 升级到 .Net 4.5 之前,我没有遇到这个问题。
使用 .Net 4.0,即使我在命令行中指定了 x86,我也能够获得我的 x64 目标。
我在 .Net 4.0 环境中进行了构建,然后在 .Net 4.5 环境中进行了另一个构建,并将输出通过管道传输到日志文件中。我注意到日志文件中存在一些差异,但我认为这是导致我的问题的原因:
在 .Net 4.0 中,我在日志文件中看到了这一行:
/reference:C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll
在 .Net 4.5 中,我在日志文件中看到这一行: /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Microsoft.CSharp.dll"
有什么想法吗?它接缝 .Net 4.5 使用的是 x86 特定路径。
【问题讨论】:
-
您使用什么命令行来运行 msbuild?您构建 sln 或 csproj 文件吗?具体的配置怎么传?
-
msbuild project.sln /p:Platform="x64" /t:Clean;Rebuild /p:Configuration=Debug
-
日志
Building solution configuration "Debug|x64"开头这一行的配置是否正确?你怎么理解结果不正确?创建了哪些输出目录 -bin\x86\Debug或bin\x64\Debug? -
是的,正在构建解决方案配置“Debug|x64”。所有东西都放在 bin\Debug 中。当我运行应用程序时,我在任务管理器中查看它是一个 x86 进程。如果我在具有 .Net 4.0 的服务器上构建它,或者如果我使用 IDE 构建它,我看不到这一点。
标签: msbuild