gpt4 book ai didi

c# - 如何为 Visual Studio 项目添加和编译自定义 'Platform' 开关?

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:54 25 4
gpt4 key购买 nike

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

例如,一种用于“桌面”,另一种用于“网络”。目标构建任务然后根据平台切换以自定义方式编译代码。我们不想添加到 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 会使用户使用起来更加复杂。因为“桌面”和“网络”实际上是平台,而且还可以在下拉列表中添加新平台(即 ),所以我相信“平台”开关应该用于完全相同的目的。

最佳答案

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

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

当在 Visual Studio 中创建项目时,ProcessTarget 属性可能默认设置为 PropertyGroups 下的 AnyCPU,具有像这样的条件限制 "'...|$(Platform)' == '... |AnyCPU'”。但它并不强制你做同样的事情。 ProcessTarget 属性可以很容易地设置为具有其他值的平台属性的 AnyCPU。

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

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

它一定在工作。

希望对你有用。

关于c# - 如何为 Visual Studio 项目添加和编译自定义 'Platform' 开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com