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

时间:2019-11-17 10:29:29

标签: c# asp.net asp.net-mvc asp.net-core

我正在扩展,我想通过该扩展确定当前项目是否在MVC框架上。我正在以编程方式在.csproj文件中进行检查。项目可以在ASP.NET Core Web或ASP.NET Web应用程序上。

我想知道具体的检查/条件,如果我的应用程序是MVC,这将帮助我返回true。

谢谢

2 个答案:

答案 0 :(得分:2)

可以在任何项目中添加MVC功能,因此没有简单的方法可以从proj文件中分辨出来。但是通常,如果它是在Visual Studio中作为MVC项目创建的,则它将具有MVC项目类型GUID之一。

这些是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}

答案 1 :(得分:0)

有针对Net Core的预处理器定义,当项目在ASP.NET Core中运行时,可以使用它来设置常量。

size() -1

或者,如果您(可以)将以下内容添加到.csproj中,则可以使用更简单的形式,在发布新框架时无需修改:

在.csproj中:

#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

下面的代码可以设置常量:

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

请参见https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html