【问题标题】:How to best share c# dlls in web app?如何在 Web 应用程序中最好地共享 c# dll?
【发布时间】:2015-01-16 02:44:00
【问题描述】:

我正在构建一个 web 应用程序项目,并希望从桌面 c# 项目中引用一些 dll。这两个项目都很大。

这一切都是有机发展的,所以到目前为止我们所做的是将 dll 项目包含在 Web 应用程序解决方案中,这使得调试变得容易。因此,目前我们所有的代码(桌面应用程序和网络应用程序)都位于一个大型 git 存储库中,我们构建网络应用程序并通过 Jenkins 将代码复制到网络服务器。

现在是更好地管理代码并将 repo 分成两部分的时候了。我遇到的问题是我无法再像通过 Jenkins 那样构建代码,因为桌面应用程序代码(和 dll)将从 Jenkins 工作目录中消失(除非我创建一个通用工作目录)。

我只是想了解如何最好地管理代码: - 我如何最好地将桌面 c# dll 包含在我的 Web 应用程序解决方案中? - 如果我不将 dll 项目包含在 Web 应用程序中(调试 Web 应用程序时),是否有任何方法仍然能够调试 dll? - 如何使网络应用解决方案中的 dll 保持最新(例如,如果我将它们放入 bin 文件夹中)? - 有没有办法不在 repo 中包含 dll,但让 Jenkins 重建并复制 dll?

【问题讨论】:

    标签: c# git dll jenkins


    【解决方案1】:

    您可以将共享的 DLL 以二进制格式托管在 nuget 包中,并让桌面和 Web 应用程序都引用它。

    我不知道 Jenkins 部分,但一个快速的谷歌说有一个支持 nuget 的 plugin

    Creating nuget packages 是一个简单直接的过程,它在 nuspec 文件中添加一些有关 nuget 的元数据,并使用一些参数调用 nuget.exe 来为您创建包 (nupkg),您可以稍后在您的项目。

    Hosting nuget packages 供以后查找和使用,您需要创建一个提要。它可以像将文件存储在某个文件夹中并配置构建工具(Visual Studio、MSBUILD 等)在哪里查找 nuget 提要一样简单。

    在 Visual Studio 中通过 nuget package manager 插件引用 nuget。

    【讨论】:

    • 不错的主意。 nuget 包可以是私有的吗?
    • 是的,如果它们托管在您的私有 nuget 提要中(可以只是代码存储库中的一个文件夹或共享网络路径)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多