我想将一个针对 .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()method; 所以,我已经在我的.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 及更高版本使用什么条件?
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
看起来我在这篇非常好的文章中找到了解决方案。使用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
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消