运行时:.net-core 2.0,C#7.1 Visual Studio 2017 15.4.1
在我的解决方案中,我有一个网络核心图书馆项目' Accounting.Core'和Asp.Net MVC网络核心项目' Accounting.Web'
在Accounting.Core中,我有一个非命名空间效果文件夹' Tags',其中我声明了以下类:
namespace Accounting.Core
{
[HtmlTargetElement("table", Attributes = "asp-table")]
public class AspTableTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if(!output.Attributes.ContainsName("href"))
throw new Exception("asp-table must contain a valid href to load data from");
var action = output.Attributes["href"];
//Breakpoint set on this line below
var content = output.Content;
}
}
}
在我的网站项目的_ViewImports.cshtml文件中,我有以下内容:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Accounting.Core
最后我在视图中有以下剃刀代码:
<table asp-table>
<tr>
<td><a asp-action="Index" asp-controller="IncomeType">Test</a></td>
</tr>
</table>
但是,当我在默认情况下构建调试模式时,调试器会抱怨我没有为我的TagHelper类加载符号,并且我不会遇到断点。渲染所述视图也没有提供任何帮助。没有什么值得注意的。
我如何使这项工作?
答案 0 :(得分:1)
答案如下:
编译到网络核心库项目(.dll)时,编译器会优化掉转换为未使用变量的代码行。
如果我将断点移到if语句上,它实际上似乎正常工作。