我正在构建一个可以扫描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#代码..如何只提取@ {*这部分只是:)}。
答案 0 :(得分:0)
您可能想要编写一个可以接受参数(文件名/其他)并使用流读取器的控制台应用程序。 https://msdn.microsoft.com/en-us/library/db5x7c0d(v=vs.110).aspx
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 0)
{
string line = null;
string targetStart = "@{";
string targetEnd = "}";
string fileName = args[0];
using (var reader = new StreamReader(fileName))
{
line = reader.ReadLine();
if (line.Contains(targetStart))
{
while (reader.ReadLine() != targetEnd)
{
var readLine = reader.ReadLine();
if (readLine != null) Console.WriteLine(readLine.ToString());
}
}
Console.Read();
}
}
}
}
}
**我在.cshtml上测试了它并且它有效