【问题标题】:What does '[some_platform, 0]' mean in Visual Studio?'[some_platform, 0]' 在 Visual Studio 中是什么意思?
【发布时间】:2017-05-18 06:09:50
【问题描述】:

当我打开生成的解决方案+项目文件时,对于项目文件中的每个平台,我都会收到以下警告:

path/to/project.vcxproj:警告:无法找到项目文件“project”中引用的平台“[some_platform,0]”。

some_platform是项目中有效的平台,构建、浏览等一切正常。没有行号显示哪里问题出在哪里。

我的问题是,'[some_platform, 0]' 的真正含义是什么?

来自 Linux,我最初认为引号表示我在某处字面上指定了 [some_platform, 0],但我没有。我也没有在项目文件的任何地方看到,\s*0。我如何破译该消息才能找出它在抱怨什么?


如果重要的话,这是一个 C++ 项目。


编辑:甚至使用, 的唯一地方是在两条消息和一个 SDK 引用中。所以[some_platform, 0]绝对是为了警告而构建的,但是第二部分(0)是什么意思呢?


已解决:为什么VS会产生这样的输出,我不知道,谁知道0是什么意思。然而,事实证明,平台名称是 SDK 将向 VS 注册的东西(或类似的东西),并且 VS 期望它区分大小写。我已将 ORBIS 和 Durango 更改为 orbis 和 durango,导致警告。修复案例使警告消失(无论如何,项目正在加载和构建)。

【问题讨论】:

  • 这意味着 'some_platform' 和 '0' 缺少平台。很难帮助更多没有复制位。
  • @SimonMourier 所以你说缺少两个独立的平台,它决定像这样输出它?第一个 (some_platform) 肯定不会丢失。第二个(0)没有理由出现。如果你说的是真的,那么说Platform '[x, y]' 而不是Platforms x, y 仍然没有意义。
  • 如果你不相信那些试图提供帮助的人的回答,你就不应该提问。消息在 Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.dll 中定义,如果您使用 ILSpy、Reflector、DnSpy 等工具,您会看到第一个参数是平台列表的串联。我没有说这有道理,就像我说的,我们需要更多的帮助来进一步帮助
  • @SimonMourier,这里不存在信任问题。我只是试图分析响应以得出正确的答案(就像任何科学家都会做的那样)。好的,这里有更多信息。假设我在项目中有三个平台:durangoorbisx64(前两个或 xb1 和 ps4 平台)。它们实际上使用相同的项目文件构建良好,因此它们根本没有任何问题。当我打开项目文件时,我收到两条关于 '[durango, 0]''[orbis, 0]' 丢失的消息(但不适用于 x64)。
  • 如果警告显示的是平台列表,它应该给出关于'[durango, orbis, 0]'的警告,你不同意吗?它产生两个错误是否有意义,每个错误都是一个列表,重叠(0)但具有互斥的元素?

标签: visual-studio visual-studio-2015


【解决方案1】:

我认为您可能拥有无与伦比的解决方案/项目平台和构建配置,导致 Visual Studio 定义或创建新配置的罕见情况:https://msdn.microsoft.com/en-us/library/kkz9kefa.aspx 以奇怪的平台名称结尾 '[some_platform, 0]', '[ durango, 0]' 和 '[orbis, 0]' 你有。

现在这完全是我的猜测(因为我找不到任何文件来确认它)。但 0 的实际含义是,当您针对这些单独的平台时,该项目应使用的默认构建配置的引用。例如,您通常在解决方案 (.sln) 文件中有与此类似的行:
{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU

在上述情况下,当从控制台使用 msbuild solutionname.sln 时,您将使用构建配置 0 作为默认构建配置。但是由于整个平台都是为该项目生成的,我们当然也没有默认的构建配置,所以......让我们生成。这篇文章中有更多关于默认构建配置的详细信息和示例:Visual Studio solution file - what does the "Build.0" mean?

现在回到你真正的问题。您提到了 SDK 引用,您是否确保它们指向正确的位置并且在 Visual Studio 中正确配置了任何环境变量?如果不是,则问题可能与此处提到的警告有关: Platform 'Android' referenced in the project file 'san-angeles' cannot be found。该问题的警告消息肯定与您收到的警告相似,只是您有那些奇怪生成的平台名称。

希望这能帮助您解决问题。

【讨论】:

  • 关于SDK参考,是的,没关系。在我拥有的三个平台(orbisx64durango)中,只有 durango 具有 SDKReference,但 durangoorbis 都会生成该警告。此外,该项目构建良好。
  • 恐怕我没有真正理解第一段。您是说我在项目文件中引用了一个平台,但它是在“构建配置”中定义的?与项目文件分开的“构建配置”到底是什么?
  • Build.0 确实在.sln 文件中使用(不是混合使用,而是针对每个平台单独使用),类似于您提到的方式。 但由于整个平台都是为该项目生成的,我们当然也没有默认的构建配置,所以……让我们生成吧。 你的意思是我应该定义一个默认的构建配置吗?
  • 不,我宁愿猜测您在 soultion 文件或某些项目中引用了平台,但在您的某些项目(.vcxproj 文件)中没有定义。在上面的示例中,它可能是 c++ 项目“项目”。我确实知道 Visual Studio 在引用路径中的逗号有一些问题顺便说一句,你提到了一些关于引用路径中的逗号的东西,你在那个 SDK 的路径中有逗号吗?
  • 逗号是不是指分号 (;)?因为windows(以及vs)使用;来分隔目录(而不是标准的:)。项目文件中唯一的SDKReference是这样的:<SDKReference Include="Xbox Services API, Version=8.0"></SDKReference>(有一个逗号(,))。同样,这构建得很好。该 SDKReference 以'$(Platform)=='durango' 为条件,但也会为orbis 生成警告,但不会为x64 生成警告。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2015-03-20
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
相关资源
最近更新 更多