如何在网络应用程序中最好地共享 c# dll?

How to best share c# dlls in web app?

我正在构建一个 Web 应用程序项目,并希望从桌面 C# 项目中引用一些 dll。两个项目都挺大的。

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

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

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

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

我不知道 Jenkins 部分,但快速 google 说有一个 plugin 支持 nuget。

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

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

引用 nuget 是在 visual studio 中通过 nuget package manager 插件完成的。