【发布时间】:2016-04-20 00:56:06
【问题描述】:
我正在构建一个控制台应用程序,它可以扫描 MVC 应用程序和简单的 asp.Net 类(即 .cs 文件)。 我已将 roslyn 解析器用于简单的 C# 代码,它运行良好:)。 现在我想扫描剃须刀文件,但 roslyn 编译器没有像 C# 那样扫描它。 Leme 给你举个例子..这是我的 Razor 文件..
@using System.Text;
@using Microsoft.ApplicationBlocks.Data;
@using System.Configuration;
@using System.Data;
@using System.Data.SqlClient;
ViewBag.Title = "throwEx";
}
<h2>throwEx</h2>
<h3>
@{
string name = "";
string country = "";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@Name", name));
parameters.Add(new SqlParameter("@Country", country));
int customerId = Convert.ToInt32(SqlHelper.ExecuteScalar(constr, CommandType.Text, "query", parameters.ToArray()));
}
</h3>
这里我只想扫描 C# 代码。如何仅提取 @{*this Part only :)}。
【问题讨论】:
-
您遇到了什么错误?您尝试过什么代码进行“扫描”?您是否希望代码通过目录和文件类型匹配,使用视图作为输入参数......?
-
不,我没有收到任何特定错误,问题是我的应用程序将扫描 Web 应用程序并检测任何违规行为,例如我希望开发人员不要使用内联查询,而是应该使用存储过程。所以在在这种情况下,如果他们编写了此代码,则应该创建一个 volation :)。它在正常的 .cs 页面中运行良好,但在这里它没有将 sn-p 的这一部分检测为 c#,而是将其作为简单的文本文档:(....我只想提取这个 C# 代码并传递它作为解析器的 Cs Doc :) 但是如何? :(
-
感谢您的快速回复:)
-
您不应该在 cshtml 文件中包含任何类型的 SQL 查询。那些属于控制器。
-
好吧,对于一般情况,您需要一个 Razor 解析器。据我所知,Roslyn 不支持 Razor,因此您需要通过 Razor 解析器运行代码,然后提取所有 C# 代码,最后以有意义的方式在 Roslyn 中使用该 C# 代码:)