sách gpt4 ai đã đi

Visual Studio #if trên phiên bản Visual Studio

In lại 作者:行者123 更新时间:2023-12-04 07:37:23 33 4
mua khóa gpt4 Nike

我想根据我使用的 visual studio 版本编译不同的东西,比如

#if VISUAL_STUDIO_VERSION > 2015
eventH?.Invoke(this, EventArgs.Empty);
#else
if(eventH != null)
eventH(this, EventArgs.Empty);
#kết thúc nếu

Tôi có thể làm điều này bằng cách nào?

我试过类似的方法:

#if (_MSC_VER==1700)

基于 cái này没有运气。

biên tập

我在 WPF 应用程序中需要它(显然)。

基于 MSDN #if 在 c# 中只是 bool 值。那么,有没有办法根据VS版本或类似的东西在项目属性中定义一个符号?

1 Câu trả lời

你提到的是一个#define ,一个编译时间常数。这些定义需要......定义(duh !!),如果它们未定义则它们为空,因此表达式失败。您最初的链接示例是针对 C++ 的,因此自然不会在 C# 中为您定义它。

在幕后,Visual Studio 使用 MSBuild 对您的项目进行实际编译(MSBuild 然后调用编译器)。你使用的 Visual Studio 版本不可用于 MSBuild。即使尝试使用预构建宏也不会起作用,因为它是在 MSBuild/TFSBuild 的上下文中执行的,此时 Visual Studio 不在上下文中。

我还应该指出,您将 Visual Studio 版本与编译器 版本混淆了——而且编译器版本本身也不是作为定义提供的。

您最好的选择是创建和使用自定义 MSBuild/TFSBuild 构建定义,然后您可以将这些 #defines 设置为构建的参数,您还可以控制调用哪个编译器(尽管这太复杂而无法显示为在这里回答)。您将拥有一个针对 C# 6 编译器的构建定义,以及一个针对默认编译器的构建定义。

关于visual-studio - Visual Studio #if on Visual Studio 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108041/

33 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com