我有一个名为framework的项目,我有依赖于这个框架项目的模块项目。
问题是:我团队中的一些开发人员会有这个框架代码,而其他人不会。我想知道,如果Visual Studio没有找到这个引用,它是否会自动从nuget包中获取这个框架库。
只有在项目确实存在的情况下,才可以使用Condition
来包含该项目:
<ProjectReference Include="....FrameworkFramework.csproj" Condition="Exists('....FrameworkFramework.csproj')" />
<PackageReference Include="MyCompany.Framework" Version="1.0.0" Condition="!Exists('....FrameworkFramework.csproj')" />
您有两个选项可以引用其他项目:
项目参考资料
这通常使用单回购方法来完成,大多数情况下所有项目都是同一解决方案的一部分。
如果你想引用其他存储库中的项目,Git子模块可能是一个选项https://git-scm.com/book/en/v2/Git-Tools-Submodules
项目引用在my-Project.csproj文件中如下所示:
<ProjectReference Include="....ModulesCoreCore.csproj" />
NuGet包
在这里,您可以构建您的框架并将其发布为NuGet包。然后,在需要时引用包(而不是项目(,Visual Studio将从NuGet存储库下载指定的版本。
设置自己的NuGet存储库的两个选项:
- https://learn.microsoft.com/en-us/azure/devops/artifacts/get-started-nuget?view=azure-devops
- https://www.sonatype.com/nexus-repository-oss
您也可以从本地文件系统使用NuGet包。如何在本地安装NuGet包.nupkg文件?(就我个人而言,我不建议在大多数情况下这样做(
在my-project.csproj文件中引用NuGet包:
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
或者使用visual Studio软件包管理器:https://learn.microsoft.com/en-us/nuget/quickstart/install-and-use-a-package-in-visual-studio
请注意,您必须首先添加NuGet存储库提要:https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/consume?view=azure-devops
另请参阅
- 如果不在.NET Core中,是否可以引用解决方案中存在的项目并使用NuGet包引用作为回退