防止添加新的 csproj 将 AnyCPU 添加回解决方案文件



我们有一个解决方案,我们只想拥有x86平台,但每次我们向解决方案添加新项目时,它都会为解决方案中的每个项目添加AnyCPU。删除解决方案文件中的所有AnyCPU行很繁琐,因为我们在解决方案中有 70+ 个项目。他们有什么方法可以配置Visual Studio以防止添加它吗?

不确定这是否相关,但我们使用的是旧项目系统,仅在我们的解决方案中使用 csproj。

编辑 1:

我想阻止AnyCPU被添加回解决方案的原因是使用某些 nuget 包构建时存在警告和问题。

  1. 我们的一些第三方依赖项是针对x86构建的,当我们引用它们时,它会生成没有代码的警告,因此我无法抑制它们。
  2. 我特别知道导致问题的 nuget 包是 CefSharp。如果开发人员选择AnyCPU,它将无法构建引用它的桌面应用程序。它使用该平台来确定是否应复制其非托管x86x64dll。

编辑2:

这是解决方案中导致我们构建时出现问题的部分。根据我所读到的内容,Visual Studio会按字母顺序浏览此列表,以查找未提供的平台。此示例来自一个不相关的解决方案。

GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
QA|Any CPU = QA|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection

编辑3:

据我所知,汉斯的回答是处理这个问题的正确方法。我一直在寻找其他方法来解决这个问题,但在查看用户语音后,能够找到 2011 年建议的地方。

这是一个非常常见的错误。VS2010在很大程度上负责它,其项目模板选择x86而不是AnyCPU。 在VS2012中再次修复,但不会修复曾经暴露在VS2010的解决方案造成的任何损坏。 或者帮助程序员做对。

平台选择对于 C# 项目毫无意义。 您对任何平台使用完全相同的构建工具,生成的代码真正与"任何 CPU"兼容。 它是锁定目标处理器的实时编译器,它在运行时执行此操作。 唯一对抖动的影响很重要的设置是"项目>属性">"生成"选项卡中。 只有 EXE 项目的设置很重要,库别无选择,只能与进程的位数兼容。

这对C++项目确实很重要。 很多时候,他们为每个平台使用完全不同的编译器和链接器。 因此,C++项目会预先生成机器代码,并且该代码必须与用户的机器兼容。 这也是在VS2010上被搞砸的原因,那就是C++构建系统转移到MSBuild的时候。

AnyCPU 重新弹出到解决方案中的典型原因是添加新项目。 由于它们再次默认为 AnyCPU,因此需要将其添加回解决方案平台。

到目前为止,最好的解决方案是停止与机器作斗争。 AnyCPU 应该是您的偏好。 使用"生成>配置管理器">"活动解决方案"组合框>编辑。 删除 x86,以便只剩下 AnyCPU。 并且要专注于您想要完成的事情,重要的是 EXE 项目设置。 当心另一个陷阱,即使默认平台是 AnyCPU,项目模板默认打开"首选 32 位"复选框。 不再是任何 CPU。 顺便说一句,Microsoft修复此问题时,64 位调试器和抖动已经稳定且能够足够长的时间,不再需要它。

最新更新