【问题标题】:Changing a Visual Studio C# project from x86 to Any CPU将 Visual Studio C# 项目从 x86 更改为 Any CPU
【发布时间】:2011-01-10 00:04:27
【问题描述】:

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

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

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

我可以使用/platform:anycpu 在命令行上手动运行 C# 编译器,但我没有收到错误,但我不确定这样做是否正确,我希望能够构建在 Visual Studio 中。

我能做些什么来解决这个问题?

【问题讨论】:

  • 您确定在所有配置中都更改了平台目标(即在调试和发布配置中)?
  • 我不认为 VS 关心依赖关系。我已经能够构建具有 32 位依赖项的 AnyCPU 项目——当 DLL 试图加载时,它们会迅速(并且适当地)崩溃。听从 divo 的建议。
  • 我确实在所有配置中更改了平台目标,它仍然使用 /platform:x86 运行编译器,并且不保存项目中的更改。

标签: c# visual-studio-2005


【解决方案1】:

确保您已将配置平台平台目标都更改为Any CPU。如果一切都失败了,您可以打开.csproj 并手动更改引用。右键单击项目,转到卸载项目。然后右键单击并转到Edit MyProject.csproj。项目的属性可能仍包括默认的 x86 平台:

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

还要考虑解决方案在配置管理器中仍然具有 x86 配置的情况。我找到了一些复杂的解决方案,其中包含具有不同配置的多个项目,我必须在 Configuration Manager 中花费大量时间来搞定一切。

【讨论】:

  • 我已经更改了配置平台和平台目标,但仍然无法保存更改。我能够编辑 .csproj 文件并这样做,所以我认为这就是我目前正在寻找的。它是否真的运行是另一回事。我仍然觉得这可能与我看不到针对其他平台的依赖项有关,但很难说。
  • 遇到这个试图解决同样的问题......我最终发现,即使一个项目被设置为调试,比如说,调试/任何 CPU 的解决方案配置中的调试/任何 CPU,项目的属性页面“构建”选项卡允许您为“调试/任何 CPU”选择目标平台。在我的情况下,“调试/任何 CPU”明确针对 x86,因此当我为调试/任何 CPU 编译项目时,生成的 DLL 是为 x86 显式编译的......这在 x64 环境中加载时导致无效格式错误。还有很多'wtf?必须拥有。
  • 澄清一下,我不是在谈论配置管理器设置...有两个地方可能会错误地指定配置。解决方案管理器允许您将项目设置为“调试/任何 CPU”配置的“发布/x64”...项目属性的构建选项卡让您说“发布/x64”针对 x86 平台。困惑了吗?
  • 我知道这有点老了,但刚刚解决了一个类似的问题。我相信当您尝试将平台目标更改为 X 时,@JamesB 和其他人遇到的 wtf 问题是创建的但它不存在,因此您创建 X 但选择“基于 Y”。因此,您有一个名为 X 的平台,它具有 Y 的属性。因此,您需要在文本编辑器中显式修改 sln 文件,这样您就不会得到这样的混合:Release|x86.ActiveCfg = Release|Any CPU。
  • 卸载项目并编辑 .csproj 对我来说效果很好。并且这些变化在视觉工作室中反映得很好。我部署/发布没有问题。很好的解决方案。
猜你喜欢
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多