在解决方案中添加另一个外部项目的引用

kak*_*234 5 c# asp.net asp.net-core

使用:.net core mvc c#

我有一个解决方案,它有一个 .net mvc 核心 Web 应用程序和一个类库。有一个共享项目(类库),我想要这个解决方案,它是不同项目(不同解决方案)的一部分。

所有这些项目都存储在我们本地的 GIT 存储库中。

如果我将外部项目添加为现有项目中的项目依赖项,那么我们必须维护外部项目的 2 个副本。如果某些开发人员更新外部项目,更改如何传播到使用它的其他项目。并且可能有一些开发人员在我们想要阻止的本地解决方案下更新外部项目。由于所有内容都在 GIT 中,因此有可能以某种方式使依赖相关,以便其他人知道外部的任何变化。

所以基本上我们如何防止任何人对外部项目进行本地更新,同时确保任何其他使用它们的项目都可以使用外部项目的任何更新。

Mar*_*kus 5

您可以使用多种方法来实现这一点。

快速:两种解决方案中的参考项目

最快的是从两个解决方案中引用共享项目。这样,您可以在两个项目中使用它,并且更改会传播到另一个解决方案,因为您基本上是在处理相同的文件。但是,这种方法的一个巨大缺点是,如果您对解决方案 A 进行了与解决方案 B 不兼容的更改(例如,删除了解决方案 B 中使用的方法),您只会在处理解决方案 B 时发现。

简单:单一解决方案

要解决此问题,您可以将解决方案合并为一个,其中包含共享项目以及解决方案 A 和 B 中的其他项目。这样,您仍然可以方便地在解决方案中引用项目。此外,如果您构建完整的解决方案,您会立即收到有关重大更改的通知。如果这种方法在解决方案规模和团队结构方面对您来说是可行的,我会赞成这种方法。由于您已经共享了一个 Git 存储库,因此我认为这种方法非常值得考虑。

Nuget 包

如果您想将解决方案严格分开,则需要遵循更复杂的程序。例如,您可以将共享项目移动到它自己的解决方案中,并创建一个具有明确构建和版本控制策略的 Nuget 包。您可以在包源上托管 Nuget 包(例如在Visual Studio Team Services 上)。然后,解决方案 A 和 B 可以从提要中引用 Nuget 包,并在有新版本可用时更新它。

这里是使用nuspeccsproj创建 nuget 包的官方文档

使用 Visual Studio 2017 [CSPROJ] 创建 .NET Standard 2.0 包

创建 NuGet 包 [NSPEC]

  • 对我来说,创建 nuget 包看起来是更好的方法。我今天将尝试创建一个并让您知道任何问题。谢谢 (2认同)