Можно ли написать ActionFilter для. Net Framework и один. Net Core в одном проекте - PullRequest
1 голос
/ 13 января 2020

Я пишу библиотеку для кода, необходимого в нескольких проектах и ​​решениях в C#. Я пишу ActionFilter для проверки расширений файлов при загрузке файлов. Мне это нужно как в. Net Framework MVC проекте, так и в. Net Core mvc проекте.

Можно ли создать на общем ресурсе. net Standard, т.е. проект, который имеет два фильтра ActionFilter, один для. Net Framework и один для. Net Core?

1 Ответ

4 голосов
/ 13 января 2020

Для начала это помогает, в *.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

...