【问题标题】:Visual Studio, ASP.NET 5 and the IApplicationBuilder interfaceVisual Studio、ASP.NET 5 和 IApplicationBuilder 接口
【发布时间】:2016-03-23 03:20:47
【问题描述】:

在开发 ASP.NET 5 应用程序时,我经常遇到不知道 IApplicationBuilder 接口上可用的扩展方法名称的麻烦。

(这听起来可能很愚蠢)。我在我的Startup.cs 文件中,我想添加 MVC。我只找到了(假设我的 IApplicationBuilder 实例被称为appapp.UseMvcCore();。我真正想要的是app.UseMvc();。它们现在(或曾经)在不同的包中。这是一个非常愚蠢的例子,但你明白了。如果我不知道名为app.RunIISPipeline(); 的扩展方法,我怎么知道它可用?我认为这应该在 IntelliSense 中显示。

除了已安装的包之外,为什么 Visual Studio 不就配置的 NuGet 源中的包的可用扩展方法提供建议?

【问题讨论】:

    标签: visual-studio visual-studio-2015 asp.net-core


    【解决方案1】:

    我同意,与之前的(封闭源)版本的 ASP.NET 相比,当您的机器已经安装了所有东西时,它会稍微困难一些,尤其是使用 dnxcore50。

    考虑到 nuget 上有多少包,以及考虑到命名冲突的可能性,nuget 如何仅通过(部分)方法名称确定您想要哪个包在那个包里?

    一种解决方法是在 github 上快速查看您想要的包。例如,如果您知道要添加Microsoft.Aspnet.Mvc,请转到github.com/aspnet/mvc,点击T,然后输入extensions,或者更好的是applicationbuilderextensions。然后,您将看到已定义的扩展。

    更新

    您还可以在存储库的文件中搜索 this IApplicationBuilder 的出现,以在 github 存储库的搜索框中使用以下搜索字符串查找扩展方法;

    "this IApplicationBuilder" in:file
    

    Example.

    【讨论】:

    • 我想你可以将键确定为 NuGet 包 ID + 方法名称,但会有很多建议,我同意。感谢 GitHub 示例。那真的很有帮助。但是,如果我们不知道扩展是在哪里定义的(换句话说:在什么包中),那么我们就会陷入同一个问题。我想我需要总是在applicationbuilderextensions 之后在 GitHub 上找到的包中进行搜索。顺便问一下,这是命名约定吗?如果需要,编写库的开发人员可以随意给它起另一个名字,因为这只是一种扩展方法?
    • Nuget 只提供您指定的包 - 它不能帮助您确定特定功能所需的包。开发人员可以随意调用扩展方法。在 [Identity](github.com/aspnet/Identity) 中,它被称为 BuilderExtensions - 这可能是我见过的更常见的名称。文档是这里的关键——它可以帮助你找到(谷歌)你需要的包,以及如何配置它。因为 ASP.NET 太新了,所以文档是有限的。
    • 是的,好像每个人的名字都不一样。如果可以在 GitHub 上的源代码文件中进行搜索,那就太好了。然后你可以搜索this IAppBuilder。至少这会指出他们在哪里!
    猜你喜欢
    • 1970-01-01
    • 2015-03-20
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2016-08-25
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多