我正在使用Visual Studio 2010构建具有x86和x64目标的ac#项目.当我使用IDE构建时,我得到了x64和x86目标的正确结果.
当我在命令行上使用msbuild时,即使我在命令行中指定x64,我也会在x86中构建所有内容.
在我从.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特定路径.
如果您的解决方案的x64配置配置为将项目构建为AnyCPU,则可能会发生这种情况..Net 4.5中的新配置选项,首选32位,使得带有Prefer32bit标志的可执行文件在64位计算机上启动为32位进程.由于Prefer32bit标志是MSBuild目标中的默认标志,因此您将看到您描述的行为,即从.Net 4.0升级到.Net 4.5将使您的AnyCPU项目从64位切换到32位.
要为x64构建项目(而非解决方案),请在命令行中指定它:
msbuild project.csproj /p:Platform=x64
Run Code Online (Sandbox Code Playgroud)
请注意,命令行用于.csproj,而不是.sln.
或者,在Configuration Manger中验证解决方案配置,并确保将其构建为x64.
| 归档时间: |
|
| 查看次数: |
6831 次 |
| 最近记录: |