不再维护 2 个项目(Azure 与非 Azure)



我们有一个托管在 2 个环境中的 asp.net Web 应用,一个托管在 Azure 上,另一个是"独立"版本,托管在使用 IIS 的公司服务器上。这些项目并不相同。例如,Azure项目使用Microsoft.WindowsAzure.Storage.Queue等。

痛点是:当我们对一个项目进行代码更改或增强时,我们必须对另一个项目进行相同的更改,这是一个巨大的痛苦。

关于处理和管理此问题的更好方法的任何建议?一些客户希望在自己的服务器上安装我们的 Web 应用,而另一些客户则更喜欢 azure。

感谢您的反馈和见解。

要解决此类 f 问题,NuGet 派上用场

它可以轻松地将DLL,JavaScript文件或您能想到的任何其他东西的任意组合集成到项目中。即使你想要共享的只是单个 DLL 中的一组自定义实体框架类,开发人员通过 NuGet 将该 DLL 添加到他的项目中也比在某些文件共享上查找该 DLL 更容易。此外,NuGet 还允许随包一起提供可搜索的描述性文本,以便使用 Visual Studio 中的 NuGet 包管理器的开发人员可以知道他将要添加到其项目中的内容。当开发人员想要升级到较新版本的包时,NuGet 甚至简化了开发人员的工作:他只需选择 NuGet 包管理器中的"更新"选项卡,即可查找项目中哪些包具有较新版本。

在您的情况下,假设您有 2 个使用同一组代码的解决方案,您需要做的是:

1)创建一个你共同灵魂的Nuget pak笼 2) 打包 3) 发布您的解决方案

通过这种方式,即使您不想使用其他解决方案更新 nuget 源,您也可以更好地控制您的解决方案

下面介绍如何创建 Nuget 包

虽然可以从命令行创建 NuGet 包,但键入晦涩的命令不是我的首选 - 我更喜欢使用 GUI。如果这也是你的首选项,则第一步是下载 NuGet 包资源管理器。下载包资源管理器后,它将自动打开(当你想要再次使用它时,还可以在 NuGet 包管理器下的"开始"菜单中找到它)。

NuGetPackage 管理器资源管理器将其屏幕一分为二:左侧是显示包文档的窗格(标记为"包元数据"),右侧是列出包中文件的窗格(标记为"包内容")。若要开始创建新包,请从"文件"菜单中选择"新建"。之后,可以使用任一窗格,但我建议从左侧的包元数据开始,方法是输入开发人员从 NuGet 包管理器选取包时将看到的文档。我的理由是,如果您从文档开始,您将有机会在将文件添加到包并更好地了解包的组成后对其进行修改。

要创建包的文档,请单击包元数据窗格左上角的文档图标。虽然您可以输入大量信息,但四个关键项目是:

Id(必须是唯一的)

作者(包作者的逗号分隔列表)

标题

描述

标题和说明是开发人员将在 NuGet 包管理器中看到的内容,因此你希望提供开发人员查找包、识别包并了解其用途可能需要的所有信息。(可选)还可以在"标记"文本框中输入开发人员在查找包时可能使用的任何关键字,这些关键字未显示在标题或说明中。要保存更改,请单击打包元数据窗格左上角的绿色复选标记。

创建 nuget 包

当开发人员将包添加到他的项目中时,他会希望包的组件进入其项目中的正确文件夹中。因此,将文件添加到包的第一个任务是将这些文件夹添加到包中。例如,我希望我的JavaScript文件进入项目的脚本文件夹中一个名为PHVIS的子文件夹中。若要将该文件夹结构添加到我的包中,我首先需要向"包内容"窗格添加一个内容条目:从"包资源管理器内容"菜单中,我选择"添加 |新建文件夹,然后从子菜单中选择内容。内容条目将显示在包内容窗格中。

有了该条目,我就可以为我的 JavaScript 文件添加文件夹结构了。在"包内容"窗格中,右键单击内容条目,选择"添加 |新建文件夹,并在出现的对话框中为文件夹命名脚本,然后单击"确定"按钮。脚本文件夹出现在内容条目下后,我右键单击它并选择添加新文件夹以添加我的 PHVIS 文件夹。最后,我右键单击PHVIS文件夹,选择添加现有文件,浏览到我的项目,找到我的JavaScript文件并双击它以将其添加到我的软件包的内容中。现在,当开发人员将我的包添加到他的项目中时,他会在项目的 Scripts/PHVIS 文件夹中找到该 JavaScript 文件。

如果您愿意,还可以将文件从 Windows 资源管理器拖动到"包内容"窗格中。如果这样做,包资源管理器将最好地猜测文件应进入哪个条目。例如,如果我将 HtmlHelper 的 DLL 拖出 Windows 资源管理器并将其放在"包内容"窗格中,则包资源管理器会弹出一个对话框,询问我是否要将 DLL 添加到 lib 文件夹。因为我这样做,所以我只接受提供的选择:我的 DLL 显示在包内容窗格中,嵌套在 lib 条目中。如果我不想控制文件出现的文件夹和子文件夹,我可以对我的 JavaScript 文件做同样的事情。

如果发现文件夹未正确嵌套在"包内容"窗格中,则可以将其拖动到所需位置。如果要检查是否已将所有包放在所有正确的文件夹中,请从"包资源管理器文件"菜单中选择"导出",然后在出现的"选择文件夹"对话框中选择一个文件夹。程序包资源管理器会将程序包解压缩到该文件夹中,以供查看。

添加 nuget 源

现在是时候将包保存在您(和其他开发人员)可以找到它的地方了。最简单的解决方案是告诉 Visual Studio 在查找 NuGet 包时使用网络共享上的文件夹。这是该过程的一部分,您需要其他开发人员的合作,因为他需要告诉他的Visual Studio您的新文件夹。当然,您还需要使用"包管理器文件"菜单上的"保存"选项将包保存到该文件夹。

若要获取 Visual Studio 副本以在新文件夹中搜索 NuGet 包,请从"工具"菜单中选择"选项"。然后,从结果对话框的左侧列表中,展开"NuGet 包管理器"选项以显示"包源"条目。选择该条目,你将在"选项"对话框的右侧看到当前的包源列表(也可以从"管理 NuGet 包"对话框访问此对话框 - 只需单击左下角一直忽略的"设置"按钮)。

若要将 NuGet 包文件夹添加到 Visual Studio,请单击对话框右上角的加号按钮。这会将新的源项添加到已使用一些默认值填充的列表中。若要更新这些默认条目,请确保已选择新源,并在对话框底部的文本框中输入值。需要为源指定一个名称(例如,PHVIS 包源)和一个源,这是 NuGet 包文件夹的完整路径(例如 C:\NuGet)。

现在,在"Visual Studio 管理 NuGet 包"对话框中,你将在"联机"选项卡下找到新的包源。 选择源将列出文件夹中的所有包。如果选择"全部"选项,你甚至会发现你的包与来自常规 NuGet 源的包混合到结果列表中。选择包并单击"安装"时,包将添加到当前项目中。

希望对您有所帮助,如果您想进一步讨论,请与我联系。

最新更新