gpt4 book ai didi

c# - 我可以通过编译器选项传递 VisualStudio 版本名称吗?

转载 作者:太空狗 更新时间:2023-10-30 00:31:00 25 4
gpt4 key购买 nike

我正在使用 Microsoft.QualityTools.Testing.Fakes 模拟一些单元测试。

但此程序集仅适用于 VisualStudio Ultimate 的用户。

其他版本(Professional)的用户无法构建和运行此测试项目,并且在他们的环境中会报错。

所以我创建了一个编译器指令来处理这个问题:

#define Ultimate

#if Ultimate
using Microsoft.QualityTools.Testing.Fakes;
#endif

而我的测试方法是:

#if Ultimate
using (ShimsContext.Create())
{
... My code
}
#else
Assert.Inconclusive("This test needs VS Ultimate to run");
#endif

这很好用,但用户仍然需要注释/取消注释定义行。

那么,有没有办法将我的 VS 版本传递给编译器?或者有其他方法吗?

最佳答案

在文本编辑器中打开 csproj,然后在最后一个 <PropertyGroup> 之后添加:

<PropertyGroup Condition=" $(VisualStudioEdition.Contains('Ultimate')) ">
<DefineConstants>$(DefineConstants);ULTIMATE</DefineConstants>
</PropertyGroup>

请注意,我将常量全部大写,因此您必须将代码更改为:

#if ULTIMATE

如果你想像@Damian 所建议的那样面向 future :

<PropertyGroup Condition=" $(VisualStudioEdition.Contains('Ultimate')) Or $(VisualStudioEdition.Contains('Enterprise')) ">
<DefineConstants>$(DefineConstants);ULTIMATE</DefineConstants>
</PropertyGroup>

请注意,正如@Uwe 所写,这些都是“hacks”...手动编辑 csproj 是在冒险:-)

关于c# - 我可以通过编译器选项传递 VisualStudio 版本名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893607/

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