【发布时间】:2018-06-20 09:26:35
【问题描述】:
我想将针对 .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 及更高版本使用什么条件?
【问题讨论】:
-
为什么不试试呢?
-
您不需要支持 .NET Framework 4.6.1,因为 .NET Standard 2.0 支持它docs.microsoft.com/en-us/dotnet/standard/net-standard
-
条件符号建议参考serilog:github.com/serilog/serilog/blob/dev/src/Serilog/Serilog.csproj
-
@FeiyuZhou 不明白 .NET Standard 2.0 支持什么?你的意思是 System.Web 还是 ?
-
@Learner .NET Standard 支持 .NET Core 和 .NET Framework 平台。对于 .NET Standard 2.0,它支持 .NET Framework 4.6.1+。您可以阅读链接了解相关知识
标签: c# .net visual-studio target .net-standard