我们有一个解决方案,我们只想拥有x86
平台,但每次我们向解决方案添加新项目时,它都会添加AnyCPU
返回解决方案中的每个项目。删除所有的内容是很乏味的AnyCPU
解决方案文件中的行,因为解决方案中有 70 多个项目。他们有什么方法可以配置 Visual Studio 以防止添加此内容吗?
不确定这是否相关,但我们使用的是遗留项目系统,并且在我们的解决方案中仅使用 csproj。
EDIT 1:
我想保留的理由AnyCPU
之所以被添加回解决方案是因为使用某些 nuget 包进行构建时出现警告和问题。
- 我们的一些第三方依赖项是针对
x86
当我们引用它们时,它会产生没有代码的警告,所以我无法抑制它们。
- 我特别知道导致问题的 nuget 包是 CefSharp。如果开发人员选择,它将无法构建引用它的桌面应用程序
AnyCPU
。它使用该平台来确定是否应该复制其非托管x86
or x64
dll.
EDIT 2:
这是我们构建时导致问题的解决方案部分。从我所拥有的read https://aras-p.info/blog/2017/03/23/How-does-Visual-Studio-pick-default-config/platform/#default-platform如果未提供平台,Visual Studio 将按字母顺序查找此列表。此示例来自一个不相关的解决方案。
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
QA|Any CPU = QA|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
EDIT 3:
据我所知,汉斯的回答是处理这个问题的正确方法。我已经寻找其他方法来处理这个问题,但是在查看 uservoice 后能够找到它在哪里建议 https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/2463093-stop-automatically-messing-with-my-solution-config在2011年。
这是一个非常常见的错误。 VS2010在很大程度上对此负责,它的项目模板选择了x86而不是AnyCPU。在 VS2012 中再次修复,但没有修复曾经暴露于 VS2010 的解决方案造成的任何损坏。或者帮助程序员把事情做好。
平台选择对于C#项目来说没有意义。您对任何平台使用完全相同的构建工具,生成的代码真正与“任何 cpu”兼容。它是锁定目标处理器的即时编译器,它在运行时执行此操作。这only对影响抖动效果至关重要的设置位于“项目”>“属性”>“构建”选项卡中。只有 EXE 项目的设置很重要,库别无选择,只能与进程的位数兼容。
It does对于 C++ 项目很重要。很多时候,他们为每个平台使用完全不同的编译器和链接器。因此,C++ 项目必须预先生成机器代码,并且该代码必须与用户的机器兼容。这也是 VS2010 中出现问题的原因,因为 C++ 构建系统迁移到了 MSBuild。
AnyCPU 重新出现在解决方案中的典型原因是添加一个新项目。由于它们再次默认为 AnyCPU,因此需要将其添加回解决方案平台。
到目前为止,最好的解决方案是停止与机器对抗。 AnyCPU 应该是您的首选。使用“构建”>“配置管理器”>“活动解决方案”组合框>“编辑”。删除 x86,仅保留 AnyCPU。并专注于您想要完成的任务,重要的是 EXE 项目设置。请注意另一个陷阱,即使默认平台是 AnyCPU,项目模板也会默认打开“首选 32 位”复选框。已经没有CPU了。顺便说一句,微软已经修复了这个问题,64 位调试器和抖动已经稳定且功能足够长,不再需要它了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)