Lea*_*ner 6 .net c# target visual-studio .net-standard
我想将一个针对.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>
Run Code Online (Sandbox Code Playgroud)
在我目前使用的代码中,例如:System.Web.Hosting.HostingEnvironment.MapPath()method; 所以,我已经在我的.csproj文件中添加了一个条件:
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System.Web" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
现在在我的代码中,我知道我可以有这样的东西:
#if NET461
if (someFolderVar.StartsWith("~/"))
someFolderVar = System.Web.Hosting.HostingEnvironment.MapPath(someFolderVar);
#endif
Run Code Online (Sandbox Code Playgroud)
我的问题:
如果稍后我将我的项目更改为目标.NET Framework 4.7,是否将执行上述代码或仅严格针对.NET Framework 4.6.1?4.6.1及以上的使用条件是什么?
看来我在这篇非常好的文章中找到了解决方案。使用NETFULL条件符号(来自文章,但任何名称都可以)应该是一个解决方案:
<PropertyGroup Condition=" '$(TargetFramework)' == 'net461'">
<DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net47'">
<DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
然后是代码:
#if NETFULL
if (someFolderVar.StartsWith("~/"))
someFolderVar = System.Web.Hosting.HostingEnvironment.MapPath(someFolderVar);
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |