我正在扩展,我想通过该扩展确定当前项目是否在MVC框架上。我正在以编程方式在.csproj文件中进行检查。项目可以在ASP.NET Core Web或ASP.NET Web应用程序上。
我想知道具体的检查/条件,如果我的应用程序是MVC,这将帮助我返回true。
谢谢
答案 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