我有一个名为“框架”的项目,还有模块项目依赖于该框架项目。
问题是:我的团队中的一些开发人员将拥有这个框架代码,而其他人则没有。我想知道是否有一种方法,如果Visual Studio找不到这个引用,它会自动从NuGet包获取这个框架库。
问题是:我的团队中的一些开发人员将拥有这个框架代码,而其他人则没有。我想知道是否有一种方法,如果Visual Studio找不到这个引用,它会自动从NuGet包获取这个框架库。
您可以使用Condition
来仅在项目实际存在时包含它:
<ProjectReference Include="..\..\Framework\Framework.csproj" Condition="Exists('..\..\Framework\Framework.csproj')" />
<PackageReference Include="MyCompany.Framework" Version="1.0.0" Condition="!Exists('..\..\Framework\Framework.csproj')" />
您有两个选项来引用其他项目:
这通常是使用单存储库方法完成的,大多数情况下,所有项目都是同一个解决方案的一部分。
如果您想从其他存储库中引用项目,则 Git 子模块可能是一个选择 https://git-scm.com/book/en/v2/Git-Tools-Submodules
在 my-project.csproj 文件中,项目引用看起来像这样:
<ProjectReference Include="..\..\Modules\Core\Core.csproj" />
在这里,您可以将您的框架构建并发布为 NuGet 包。然后,您只需要在需要时引用该包(而不是项目),Visual Studio 将从您的 NuGet 存储库中下载指定版本。
有两个选项来设置自己的 NuGet 存储库:
您也可以从本地文件系统使用 NuGet 包 如何在本地安装 NuGet 包 .nupkg 文件?(对于大多数情况,我个人不建议使用此方法)
在 my-project.csproj 文件中引用 NuGet 包:
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
或者使用Visual Studio包管理器:https://learn.microsoft.com/zh-cn/nuget/quickstart/install-and-use-a-package-in-visual-studio
请注意,您必须先添加您的NuGet存储库源:https://docs.microsoft.com/zh-cn/azure/devops/artifacts/nuget/consume?view=azure-devops&tabs=windows