【问题标题】:How to add and compile for custom 'Platform' switch for visual studio projects?如何为 Visual Studio 项目的自定义“平台”开关添加和编译?
【发布时间】:2008-11-05 17:51:10
【问题描述】:

我们希望为 Visual Studio 中的项目提供两个自定义平台开关(配置管理器中的平台下拉菜单)。

例如,一个用于“桌面”,一个用于“Web”。然后目标构建任务基于平台切换以自定义方式编译代码。我们不想添加到 Debug Release 开关,因为每个桌面和 Web 平台都需要这些开关。

我们找到了一种尝试方法,即修改 .csproj 文件以添加类似的内容

<Platform Condition=" '$(Platform)' == '' ">Desktop</Platform>

并添加属性组,例如,

    <PropertyGroup Condition=" '$(Platform)' == 'Web' ">
        <DefineConstants>/define Web</DefineConstants>
        <PlatformTarget>Web</PlatformTarget>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Platform)' == 'Desktop' ">
        <DefineConstants>/define Desktop</DefineConstants>
        <PlatformTarget>Desktop</PlatformTarget>
      </PropertyGroup>

但这仍然不起作用,编译器会抛出错误

/platform 的“桌面”选项无效;必须是 anycpu、x86、Itanium 或 x64

那么它是否必须是这些选项之一,我们不能添加我们的自定义平台吗?

有人能做到吗?任何指针都会有所帮助。

更新:使用 DebugDesktop 和 ReleaseDesktop 会使用户更加复杂。因为“桌面”和“网络”实际上是平台,并且可以在下拉列表中添加新平台(即 ),我相信“平台”开关应该用于完全相同的目的。

【问题讨论】:

    标签: c# visual-studio visual-studio-2008


    【解决方案1】:

    也许三年后这个主题对某人来说会很有趣。我在配置构建平台时遇到了类似的困难并解决了这些问题。

    您给出的错误是因为 PlatformTarget 属性是使用 Desctop 设置的,而不是因为 Platform 属性。这两个属性的含义略有不同。第一个真正最终指示构建过程的所有参与者应该使用哪个流程架构,而第二个允许在 IDE 中自定义构建环境。

    当在 Visual Studio 中创建项目时,ProcessTarget 属性可能会默认设置为带有条件限制的 PropertyGroups 下的 AnyCPU,例如 "'...|$(Platform)' == '... |AnyCPU'”。但它并不强制你做同样的事情。 ProcessTarget 属性可以使用 AnyCPU 轻松设置,因为 Platform 属性具有其他值。

    考虑到上述情况,您的示例可能如下所示:

    <PropertyGroup Condition=" '$(Platform)' == 'Web' ">
        <DefineConstants>Web</DefineConstants>
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Platform)' == 'Desktop' ">
        <DefineConstants>Desktop</DefineConstants>
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    

    它必须工作。

    希望对你有用。

    【讨论】:

      【解决方案2】:

      您应该能够使用配置管理器对话框来创建新平台。

      【讨论】:

      • 你确定吗?当我尝试它时,我可以创建一个“新”平台(实际的 x64),但它在其他任何地方都被忽略了。我经常发现编辑 XML 比浏览对话框更容易,所以如果@Will 决定采取这条路线,我会假设他有自己的充分理由。
      • 查看下面的答案,您从 UI 添加一个平台,然后他们手动修改项目文件
      【解决方案3】:

      我最近问过同样的问题,看来您可以使用 Visual Studio 2010 定义自己的项目平台。 (见http://blogs.msdn.com/b/vcblog/archive/2008/11/20/printf-hello-msbuild-n.aspx)。不幸的是,我们仍在使用 2008。

      【讨论】:

        【解决方案4】:

        也在寻找这个...但是根据https://msdn.microsoft.com/en-us/library/bb629394.aspx,MSBuild 引擎的唯一有效值是“Any CPU”、“x86”和“x64”。 真的支持这种自定义吗?

        【讨论】:

          【解决方案5】:

          将“Debug”和“Release”重命名为“Debug Desktop”和“Release Desktop”,并将它们复制到名称“Debug Web”和“Release Web”中。然后以这种方式设置常量。

          【讨论】:

          • 所以你的意思是不能使用平台切换?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-12
          • 2013-01-13
          • 2016-06-03
          相关资源
          最近更新 更多