gpt4 book ai didi

c# - 正确定位多个框架时如何使用条件符号(VS2017)

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

我想将一个以 .NET Framework 4.6.1 为目标的库项目迁移到一个同时以 .NET Framework 4.6.1 和 .NET Standard 2.0 为目标的新项目。

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT' "> 
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
</PropertyGroup>

在我当前的代码中,我使用,例如:System.Web.Hosting.HostingEnvironment.MapPath() 方法;所以,我已经在我的 .csproj 文件中添加了一个条件:

<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System.Web" />
</ItemGroup>

现在在我的代码中,我知道我可以有这样的东西:

#if NET461
if (someFolderVar.StartsWith("~/"))
someFolderVar = System.Web.Hosting.HostingEnvironment.MapPath(someFolderVar);
#endif

我的问题:

如果稍后我将我的项目更改为以 .NET Framework 4.7 为目标,上面的代码会被执行还是将严格以 .NET Framework 4.6.1 为目标? 4.6.1 及更高版本使用什么条件?

最佳答案

看起来我在这个非常好的article 中找到了解决方案.使用 NETFULL 条件符号(来自文章,但任何名称都可以)应该是一个解决方案:

<PropertyGroup Condition=" '$(TargetFramework)' == 'net461'">
<DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net47'">
<DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>

然后是代码:

#if NETFULL
if (someFolderVar.StartsWith("~/"))
someFolderVar = System.Web.Hosting.HostingEnvironment.MapPath(someFolderVar);
#endif

关于c# - 正确定位多个框架时如何使用条件符号(VS2017),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50944737/

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