gpt4 book ai didi

c# - 在 Visual Studio 中更改生成配置时更改应用程序目标框架

转载 作者:太空狗 更新时间:2023-10-29 23:29:41 24 4
gpt4 key购买 nike

我有这些构建配置:

enter image description here

这些平台配置:

enter image description here

还有这些编译器条件:

NET40
NET45

我的解决方案是一个包含 20 个解决方案的庞大 API,其中一些解决方案消耗 Async仅 .NetFx 4.5 提供的关键字和其他优势。

我以这种方式在有条件的情况下拥有它的那部分代码:

#If NET45 then

Sub Async
...
End Sub

#Else

Sub
...
End Sub

#End If

然后,我想做的很清楚,.NetFx 4.5 构建配置应该编译 NET45 条件 block ,而 .NetFx 4.0 构建配置应该编译 #Else 部分。

我发现的问题是,如果我在项目设置中更改应用程序目标框架,更改会在所有其他构建配置中持续存在,我想避免这种持续存在。

那么我该怎么做呢?


注意:

我用 C# 标记标记了这个问题,因为这是一个一般的 Visual Studio 环境问题,但我会澄清我的解决方案是用 Vb.Net 编写的,因为我知道 C# 项目设置和它们的设置之间存在一些很大的差异编译器参数,所以 C# 高级答案可能帮不了我。

最佳答案

我的建议是通过在部分文件中移动平台/目标/等敏感代码来摆脱代码中的条件语句。然后我会转到项目文件,并使用 ms-build 提供的所有功能使包含的文件在特定条件下敏感

例子:

  • 在 Visual Studio 中创建全新的 VB 控制台应用
  • 添加三个类文件ClassDotNetFeatures40.vb、ClassDotNetFeatures45.vb、GenericClass.vb
  • 添加以下代码

在 GenericClass.vb 中

Partial Public Class GenericClass
Public Sub Hello()
Console.Write("Hello ")
End Sub
End Class

在 ClassDotNetFeatures40.vb 中

Partial Public Class GenericClass
Public Sub Word()
Console.Write("4.0 Word!")
End Sub
End Class

ClassDotNetFeatures45.vb

Public Class GenericClass
Public Sub Word()
Console.Write("4.5 Word!")
End Sub
End Class
  • 将以下代码放入Module1.vb

    Sub Main()
    Dim o = New GenericClass()

    o.Hello()
    o.Word()
    End Sub
  • 全部保存

  • 右键单击您的解决方案并按卸载项目
  • 右键单击项目文件并按编辑项目
  • 找到以下几行:
<Compile Include="ClassDotNetFeatures40.vb" />
<Compile Include="ClassDotNetFeatures45.vb" />

并将它们替换为

<Compile Condition="'$(Configuration)' == 'Debug'" Include="ClassDotNetFeatures40.vb" />
<Compile Condition="'$(Configuration)' == 'Release'" Include="ClassDotNetFeatures45.vb" />
  • 按保存
  • 右键单击项目文件并按重新加载

现在,当您运行项目撤消调试时,您将得到:

Hello 4.0 Word!

撤消释放你会得到:

Hello 4.5 Word!

关于c# - 在 Visual Studio 中更改生成配置时更改应用程序目标框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673010/

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