创建并发布NuGet包的指南

在软件开发中,将代码打包并发布到中央仓库,供其他开发者使用,是一种非常高效的做法。本文将介绍如何创建一个MVCHtmlHelper,并将其打包为NuGet包,最后发布到NuGet.org,供其他开发者使用。

将创建一个强大的MVCHtmlHelper,了解如何将其打包为NuGet包,并最终发布,以便任何人都可以使用它。本文不关注助手的开发,而是围绕创建NuGet包所需的步骤进行讨论。

可编辑的MVC助手

助手是围绕CKEditor的内联编辑功能构建的,它为更改的内容提供持久性。默认设置在查询字符串中附加"?editablemvc=true"时启用所见即所得工具栏,通过编辑元素的内容保存到文件库。存储库和授权可以在EditableMvcBootstrap类中更改。

EditableMvcBootstrap类

NuGet允许通过转换文件对配置文件进行更改,并允许添加/删除源代码文件。这意味着可以轻松地向项目中添加一个新类,但无法编辑一个现有的类,如global.asax.cs。WebActivator包克服了这个限制,允许在单独的文件中轻松地连接到主应用程序事件。在这种情况下,希望在Application_Start的开始和结束时分别添加助手的设置和js文件的注册:

C# [assembly: WebActivatorEx.PreApplicationStartMethod( typeof(EditableMvc.Web.EditableMvcBootstrap), "Start")] [assembly: WebActivatorEx.PostApplicationStartMethod( typeof(EditableMvc.Web.EditableMvcBootstrap), "PostStart")] namespace EditableMvc.Web { public static class EditableMvcBootstrap { public static void Start() { // 注册一个自定义存储库,通过实现IEditableRepository EditableMvcConfig.RegisterRepository = () => new SimpleFileRepository("~/App_Data"); // 注册用于启用/禁用HTML元素编辑的授权方法 EditableMvcConfig.RegisterAuthorization = () => { var editable = !string.IsNullOrEmpty( HttpContext.Current.Request.QueryString["editablemvc"]); if (editable) { return Convert.ToBoolean( HttpContext.Current.Request.QueryString["editablemvc"]); } return false; }; } // 在App_Start执行后注册捆绑包 public static void PostStart() { BundleTable.Bundles.Add( new ScriptBundle("~/bundles/editableMvc").Include( "~/Scripts/jquery-ui-{version}.js", "~/Scripts/ckeditor/ckeditor.js", "~/Scripts/ckeditor/plugins/editablemvcsave/editablemvcsave.js", "~/Scripts/editablemvc.js")); } } }

创建包

创建一个空的类库,并用所需的NuGet名称命名。如果有任何编译文件,项目的DLL需要包含在包中。不想编译MVC项目默认的文件(如路由、控制器等),所以选择使用空的类库作为NuGet包的目标。所需的文件将从包含工作助手的MVC项目复制到类库。

复制文件

让将想要部署到用户项目的文件添加到类库中。请注意,引导类在App_Start文件夹中:如果目标项目中不存在此文件夹,NuGet将创建该文件夹,如果找到了,它将仅将文件添加到现有文件夹中。

转换文件

虽然不允许覆盖或删除现有文件,但可以转换正在部署的文件:将源文件的文件扩展名从.cs更改为.cs.pp,并开始使用任何项目属性来更改文件的输出。然后可以使用以下方式更改命名空间:

C++ namespace $rootnamespace$.Controllers {}

使用Nuget Package Explorer创建包

虽然可以使用Package Manager Console创建包,但拥有一个GUI会更有帮助,所以让下载Nuget Package Explorer。类似于创建MSI包,该工具允许将可部署资源拖放到content文件夹中,并将所需的依赖项(如项目DLL,如果需要的话)拖放到lib文件夹中。

其他依赖项,如外部包或.NET程序集,可以通过编辑包元数据来添加:

XML

包元数据

关于包的信息包含在一个manifest文件*.nuspec中,并在发布过程中使用,以识别(连同库名称、作者等信息)程序集的版本。不允许覆盖现有版本的库,这是为了避免破坏使用该版本的代码,但只能发布程序集的新版本。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485