TagHelper类中未加载的符号方法

时间:2017-11-08 02:41:21

标签: c# asp.net-core-mvc .net-core visual-studio-2017

运行时:.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类加载符号,并且我不会遇到断点。渲染所述视图也没有提供任何帮助。没有什么值得注意的。

我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

答案如下:

编译到网络核心库项目(.dll)时,编译器会优化掉转换为未使用变量的代码行。

如果我将断点移到if语句上,它实际上似乎正常工作。