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

时间:2017-12-04 13:23:10

标签: c# asp.net asp.net-core

使用:.net core mvc c#

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

简单:单一解决方案

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

Nuget Package

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

这里是使用 nuspec csproj

创建nuget包的官方文档

Create .NET Standard 2.0 packages with Visual Studio 2017 [CSPROJ]

Creating NuGet packages [NUSPEC]