繁体   English   中英

调试安装到空Web应用程序中的整个Web的细节

[英]Debugging a nuget of an entire web installed into an empty web app

我们正在开发一个核心ASP.NET MVC Web项目和一个以MvcContrib插件Web项目形式出现的客户插件-一个作为区域注入到核心Web中的Web项目。 该插件是核心项目中的一个软参考,因此可以完全单独开发并插入。

我正在尝试生成一种调试/编码插件的方法,以便可以独立于核心Web开发多个自定义插件。

开发人员只需要担心编码和测试插件代码。 另外,我不希望他们在此自定义插件项目中更改核心代码-无论如何都应该在核心中完成。

我以NuGet软件包的形式创建了核心网站,并包含了所有必需的文件,以便可以将其包含在网站中。

我的想法是,我可以创建一个空网站,安装我的核心网站,并且开发人员可以拥有一个由F5驱动的调试环境。

我通过创建一个空白的Mvc项目进行了测试,安装了我的核心软件包并包括了我的一个插件。 我将这个空的Web应用程序的命名空间更改为核心Web的命名空间,以为Visual Studio调试可以正确地附加到我的核心程序集。

在空应用程序中进行简单的VS调试无法正常工作-我收到HTTP异常,很可能是由于未注册我的路由。 我也看到我的log4net没有创建它的日志文件夹,所以我知道程序集的应用程序启动没有被调用。

因此,我看到VS并未附加并调用我的核心程序集。

我可以将此空网站用作nuget安装的网站的主机项目并进行调试吗? 如果是这样,我缺少什么配置?

如果没有,如何将核心站点包含在每个客户插件项目中,以便可以将DLL放到bin中并对其进行调试?

使用:Visual Studio 2010

ASP.NET MVC2

我们运作良好的方式是结合使用Web Activator和Razor Generator (作为Visual Studio扩展提供 )。 为了访问核心Web应用程序中的视图,使用客户端的应用程序需要了解它们,这是因为它们都作为文件引用包含在Nuget包(messy)中,或者因为它们已编译到核心Web dll中。 您可以使用Razor Generator来实现。 通过Nuget安装后,您需要将每个.cshtml文件的“ Custom Tool属性更改为RazorGenerator ,这将为每个视图创建一个.generated.cs文件。 这将使您的示例客户端可以使用核心Web应用程序中的布局和视图。

David Ebbo 在Razor Generator上有一些有用的博客文章

结合使用Web Activator来创建一个PostActivationStartMethod来运行您的初始化代码(例如,初始化Log4Net ),那么您应该一切顺利。 我们已经在两种情况下运行了此操作-通过Nuget使用框架包并直接添加项目参考。 调试不适用于使用Nuget软件包的路由,但是我们没有在Nuget软件包中包含pdb文件。 我们可以在直接添加项目引用时进行调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM