2

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

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

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

我将核心 Web 创建为 NuGet 包,并包含所有必要的文件,因此我可以将其包含在 Web 中。

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

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

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

所以我看到 VS 没有附加并调用我的核心程序集。

我可以使用这个空的 web 作为我的 nuget 安装的 web 和调试的宿主项目吗?如果是这样,我缺少什么配置?

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

使用:Visual Studio 2010

ASP.NET MVC2

4

1 回答 1

0

我们做事的方式非常好,是结合使用 Web Activator 和Razor Generator(作为Visual Studio 扩展提供)。为了访问核心 Web 应用程序中的视图,消费客户端应用程序需要了解它们,因为它们都作为文件引用包含在 Nuget 包中(混乱),或者因为它们被编译到核心 Web dll 中。你可以使用 Razor Generator 来做到这一点。通过 Nuget 安装后,您需要将每个文件的Custom Tool属性更改为,这将为每个视图创建一个文件。这将允许您的示例客户端使用来自核心 Web 应用程序的布局和视图。.cshtmlRazorGenerator.generated.cs

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

将它与 Web Activator 结合起来,创建一个PostActivationStartMethod运行您的初始化代码(例如 initialising Log4Net)的程序,您应该一切顺利。我们已经在 2 个场景中运行了这个 - 通过 Nuget 使用框架包并直接添加项目引用。调试不适用于 Nuget 包消费路线,但我们没有在 Nuget 包中包含 pdb 文件。我们可以在直接添加项目引用时进行调试。

于 2013-04-05T07:38:13.273 回答