我们正在开发一个核心ASP.NET MVC Web项目和一个MvcContrib插件Web项目形式的客户插件 - 一个作为一个区域注入核心Web的Web项目。该插件是核心项目中的软参考,因此它可以完全单独开发并放入。
我正在尝试生成一种调试/编码插件的方法,以便可以独立于核心网开发多个自定义插件。
开发人员只需要担心编码和测试插件代码。另外,我不希望他们更改此自定义插件项目中的核心代码 - 无论如何都应该在核心中完成。
我将核心网创建为NuGet包,并包含所有必要的文件,以便将其包含在网络中。
我的想法是我可以创建一个空的Web,安装我的核心Web,开发人员可以使用F5驱动的调试环境。
我通过创建一个空白的Mvc项目进行测试,安装了我的核心软件包并包含了我的一个插件。我将这个空的Web应用程序的命名空间更改为核心Web的命名空间,认为Visual Studio调试将正确附加和我的核心程序集。
空应用程序中的简单VS调试不起作用 - 我收到HTTP异常,很可能是由于我的路由没有注册。我也看到我的log4net没有创建它的logs文件夹,所以我知道程序集的app start没有被调用。
所以我看到VS没有连接并调用我的核心程序集。
我可以将这个空的网页用作我的nuget安装的网络和调试的主机项目吗?如果是这样,我错过了什么配置?
如果没有,我如何在每个客户插件项目中包含核心网,以便我可以将我的DLL放入垃圾箱并进行调试?
使用: Visual Studio 2010
ASP.NET MVC2
答案 0 :(得分:0)
我们做得非常好的方法是使用Web Activator和Razor Generator的组合(Visual Studio extension提供)。为了访问核心Web应用程序中的视图,使用客户端应用程序需要了解它们,因为它们都作为Nuget包中的文件引用(杂乱)包含在内,或者因为它们被编译到核心Web dll中。你可以使用Razor Generator来做到这一点。通过Nuget安装后,您需要将每个Custom Tool
文件的.cshtml
属性更改为RazorGenerator
,这将为每个视图创建一个.generated.cs
文件。这将允许您的示例客户端使用核心Web应用程序中的布局和视图。
David Ebbo有一些有用的blog posts on Razor Generator
与Web Activator结合,创建一个运行初始化代码的PostActivationStartMethod
(例如初始化Log4Net
),你应该好好去。我们已经在2个场景中运行 - 通过Nuget使用框架包并直接添加项目引用。调试不适用于Nuget包使用路由,但我们不在Nuget包中包含pdb文件。我们可以在直接添加项目引用时进行调试。