【问题标题】:Is it possible to write an ActionFilter for .Net Framework and one .Net Core in Single project是否可以在单个项目中为 .Net Framework 和一个 .Net Core 编写 ActionFilter
【发布时间】:2020-04-30 01:07:58
【问题描述】:
我正在为多个项目和 C# 解决方案所需的代码编写一个库。
我正在编写一个 ActionFilter 验证文件上传的文件扩展名。我在 .Net Framework MVC 项目和 .Net Core mvc 项目中都需要这个。
是否可以在共享的 .net 标准上创建项目,即具有两个 ActionFilters 的项目,一个用于 .Net Framework,一个用于 .Net Core?
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-core
model-view-controller
【解决方案1】:
在*.csproj 文件中,它会有所帮助
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net452;netstandard2.0;</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.0'">
<DefineConstants>NETCORE;NETSTANDARD;NETSTANDARD2_0</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net452'">
<DefineConstants>NET45;NETFULL</DefineConstants>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.0.0" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net452'">
<Reference Include="System.Web" />
<PackageReference Include="Microsoft.AspNet.Mvc" Version="5.2.7" />
</ItemGroup>
</Project>
对于过滤器类:
#if NETCORE
using Microsoft.AspNetCore.Mvc.Filters;
#else
using System.Web.Mvc;
#endif
namespace SharedFilter
{
public class MyFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
throw new System.NotImplementedException();
}
public void OnActionExecuted(ActionExecutedContext context)
{
throw new System.NotImplementedException();
}
}
}
我为Serilog 编写了一个库来丰富针对多个框架的日志。查看*.csproj 和类以了解更多详细信息。
https://github.com/mo-esmp/serilog-enrichers-clientinfo/blob/master/src/Serilog.Enrichers.ClientInfo/Serilog.Enrichers.ClientInfo.csproj