繁体   English   中英

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

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

我正在研究扩展,我想通过它确定当前项目是否在 MVC 框架上。 我正在以编程方式检查这个 in.csproj 文件。 项目可以在 ASP.NET 内核 Web 或 ASP.NET ZC6E190B284633C48E39E5504ZCCE8Z 应用。

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

谢谢

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

这些取自这里

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}

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

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

在.csproj 中:

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

以下代码用于设置常量:

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

请参阅如何在#if 语句中设置 .NET Core 以进行编译

暂无
暂无

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

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