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

问题描述 投票:0回答:2

使用:.net core mvc c#

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

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

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

那么基本上我们如何才能阻止任何人对外部项目进行本地更新,同时确保对外部项目的任何更新都可供使用 使用它们的任何其他项目。

c# asp.net asp.net-core
2个回答
8
投票

您可以使用多种方法来实现此目的。

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

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

简单:单一解决方案

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

Nuget 包

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

这里是使用 nuspeccsproj

创建 nuget 包的官方文档

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

创建 NuGet 包 [NUSPEC]


0
投票

在 vs 项目中打开终端,您将在其中添加引用。 (Ctrl+")

dotnet 添加引用 ../Other_Project/Other_Project.csproj 点网构建

完成。

不要忘记使用“dotnet build”刷新它,以便您引用的项目中的更改可见。

© www.soinside.com 2019 - 2024. All rights reserved.