将VC ++项目从.NET 4.0迁移到4.5?

时间:2014-11-17 18:33:23

标签: .net visual-c++ visual-studio-2012

我正在尝试将我的VC ++项目从.NET 4.0移到4.5。我正在使用Visual Studio 2012。

使用在线指南我认为我唯一需要做的改变是编辑.vcxproj文件,为 TargetFrameworkVersion 添加此行:

<Project ...>
    <PropertyGroup Label="Globals">
        <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 
    </PropertyGroup>
</Project>

进行此更改后,属性检查器正确地将目标框架版本列为4.5。但是,当我尝试在C#.NET 4.5应用程序中加载VC ++程序集时,我得到 BadImageFormatException

enter image description here

可能导致此异常的原因是什么?我是否遗漏了一些将VC ++项目移至.NET 4.5的其他步骤?

2 个答案:

答案 0 :(得分:1)

右键单击您的解决方案...转到属性....单击构建...检查您的平台目标...确保它与项目中的每个解决方案匹配

如果您的项目具有不同的平台目标,则抛出此异常。

如果平台目标设置为x86,请确保在每个解决方案中为x86设置所有这些目标。

如果平台目标设置为x64,请确保在每个解决方案中为x64设置所有这些目标。

答案 1 :(得分:1)

这很可能与.NET框架版本无关 - 你不会因为不匹配而得到BadImageFormatException。 .NET 4.5可以加载早期的.NET框架程序集。

您的C#应用​​程序更有可能以x86身份运行,但您将C ++ / CLI项目编译为x64,反之亦然。检查您正在构建的项目的位数是否匹配。

请注意,Visual Studio 2010中C#的默认位数已更改;因此,如果您要转换的项目早于您为C#应用程序启用<Prefer32Bit>的项目,这将导致它甚至在x64计算机上以x86运行。请注意,不可能创建AnyCPU C ++ / CLI应用程序(假设您没有使用/clr:pure),因此如果您的C#应用​​程序依赖于C ++ / CLI组件,则最好用相同的标记C#应用程序比特而不是AnyCPU。