簡體   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