简体   繁体   English

如何从.csproj文件中确定MVC项目

[英]How to determine MVC project from .csproj file

I am working on extension through which I would like to determine current project is on MVC framwork.我正在研究扩展,我想通过它确定当前项目是否在 MVC 框架上。 I am checking this programmatically in.csproj file.我正在以编程方式检查这个 in.csproj 文件。 Project can on ASP.NET Core Web OR ASP.NET Web Application.项目可以在 ASP.NET 内核 Web 或 ASP.NET ZC6E190B284633C48E39E5504ZCCE8Z 应用。

I would like to know specific check/condition which will help me to return true if my application is MVC.如果我的应用程序是 MVC,我想知道将帮助我返回 true 的特定检查/条件。

Thanks谢谢

Well it's possible to add MVC features to any project, so there's no simple way to tell from the proj file.好吧,可以将 MVC 功能添加到任何项目中,因此没有简单的方法可以从 proj 文件中分辨出来。 But generally if it was created as an MVC project in Visual Studio then it will have one of the MVC project type GUIDs.但通常,如果它是在 Visual Studio 中创建为 MVC 项目,那么它将具有 MVC 项目类型 GUID 之一。

These are taken from here .这些取自这里

ASP.NET MVC 1   {603C0E0B-DB56-11DC-BE95-000D561079B0}
ASP.NET MVC 2   {F85E285D-A4E0-4152-9332-AB1D724D3325}
ASP.NET MVC 3   {E53F8FEA-EAE0-44A6-8774-FFD645390401}
ASP.NET MVC 4   {E3E379DF-F4C6-4180-9B81-6769533ABE47}
ASP.NET MVC 5   {349C5851-65DF-11DA-9384-00065B846F21}
Model-View-Controller v2 (MVC 2)    {F85E285D-A4E0-4152-9332-AB1D724D3325}
Model-View-Controller v3 (MVC 3)    {E53F8FEA-EAE0-44A6-8774-FFD645390401}
Model-View-Controller v4 (MVC 4)    {E3E379DF-F4C6-4180-9B81-6769533ABE47}
Model-View-Controller v5 (MVC 5)    {349C5851-65DF-11DA-9384-00065B846F21}

There are preprocessor defines for Net Core, you can use this to set a constant when the project is running in ASP.NET Core Net Core 有预处理器定义,当项目在 ASP.NET Core 中运行时,您可以使用它来设置一个常量

#if NETSTANDARD1_6
     public const IsCore = true;
#elif NETSTANDARD1_5
     public const IsCore = true;
#elif NETSTANDARD1_4
     public const IsCore = true;
#elif NETSTANDARD1_3
     public const IsCore = true;
#elif NETSTANDARD1_2
     public const IsCore = true;
#elif NETSTANDARD1_1
     public const IsCore = true;
#elif NETSTANDARD1_0
     public const IsCore = true;
#else
     public const IsCore = false;
#endif

Alternatively, if you (can) add the following to your.csproj, you can use a simpler form which won't need to be modified when new frameworks are released:或者,如果您(可以)将以下内容添加到 your.csproj,则可以使用更简单的形式,在发布新框架时不需要修改:

In.csproj:在.csproj 中:

<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^netcoreapp\d'))">
  <DefineConstants>NETCORE</DefineConstants>
</PropertyGroup>

And the following code somewhere to set up the constant:以下代码用于设置常量:

#if NETCORE
     public const IsCore = true;
#else
     public const IsCore = false;
#endif

See How to set .NET Core in #if statement for compilation请参阅如何在#if 语句中设置 .NET Core 以进行编译

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM