将Visual Studio C#项目从x86更改为Any CPU

27

我正在使用Visual Studio 2005开发一些C#项目,尝试将平台目标从x86更改为Any CPU。我已经检查了我所知道的所有依赖项,并使用corflags工具确保它们也是为Any CPU构建的。

当我在Visual Studio 2005中更改平台目标时,它似乎保存了更改,但是当我构建项目时,它仍然使用x86。下次打开项目时,平台目标已被重置为x86。

这只会发生在解决方案中的几个项目中,这是否意味着还存在其他32位依赖项?

我可以在命令行上手动运行C#编译器并使用/platform:anycpu,我不会收到错误提示,但我不确定这是否是正确的做法,而且我想能够在Visual Studio中构建。

我该怎么解决这个问题?


2
你确定在所有配置中都更改了平台目标吗(即在调试和发布配置中)? - Dirk Vollmar
2
我认为VS并不关心依赖项。我已经能够构建具有32位依赖项的AnyCPU项目,当DLL尝试加载时会立即崩溃(并且适当地)。采用divo的建议。 - Clinton Pierce
我已经在所有配置中更改了平台目标,但它仍然使用/platform:x86运行编译器,并且不会保存项目中的更改。 - WildCrustacean
1个回答

23

确保你已经将配置平台平台目标都改为Any CPU。如果所有其他尝试都失败了,你可以打开.csproj文件并手动更改引用。右键单击项目,转到卸载项目。然后右键单击并转到编辑 MyProject.csproj。项目属性可能仍包括默认的x86平台:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>

还要考虑解决方案仍然在配置管理器中具有x86配置的情况。我发现对于一些具有多个具有不同配置的项目的复杂解决方案,我必须花费大量时间在配置管理器中使一切变得清晰明了。


我已经更改了配置平台和目标平台,但仍无法保存更改。我能够编辑.csproj文件并以这种方式完成,所以我认为这是我此时正在寻找的东西。它是否实际运行是另一回事。我仍然觉得这可能与我看不到的针对其他平台的依赖项有关,但很难说。 - WildCrustacean
在尝试解决同样的问题时遇到了这个... 我最终发现,即使项目在“调试/任何 CPU”方案配置中设置为调试,例如“Debug/Any CPU”,该项目的属性页“生成”选项卡也可以让您选择“调试/任何 CPU”的目标平台。在我的情况下,“Debug/Any CPU”明确地针对 x86,因此当我为“Debug/Any CPU”编译项目时,生成的 DLL 显式地编译为 x86... 这会在 x64 环境中加载时引起无效格式错误。然后就会出现很多 “wtf?”。 - James King
1
只是澄清一下,我不是在谈论 Configuration Manager 的设置... 可能会错误指定配置的两个地方。 解决方案管理器可以让您将项目设置为“Release / x64”以针对“Debug / Any CPU”配置...项目属性的生成选项卡允许您指定“Release / x64”针对 x86 平台。感到困惑了吗? - James King
1
我知道这有点老了,但是我刚刚解决了一个类似的问题...我认为@JamesB和其他人遇到的问题是由于尝试将平台目标更改为X,但实际上不存在X,所以你创建了X,但选择了“基于Y”。因此,您拥有一个名为X的平台,其具有Y的属性。因此,您需要在文本编辑器中显式地修改sln文件,以免出现以下混合:Release | x86.ActiveCfg = Release | Any CPU。 - Fetchez la vache
卸载项目并编辑.csproj对我来说非常顺利。更改在Visual Studio中也得到了很好的反映。我没有遇到任何问题就部署/发布了。非常棒的解决方案。 - eaglei22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接