在开发阶段引用解决方案之外的包/项目



我的团队最近从.NET Framework迁移到.NET Core 3.1,我们的产品过去通过DLL引用引用我们的类库,我们没有使用NuGet。 在最近的更改中,我们决定开始使用 NuGet 和包引用。

因此,为了简单起见,我们有多个解决方案,假设我们在解决方案A中有ProjectA,在解决方案B中有ProjectB项目 B 需要引用项目 A,因此我们打包了项目 B并将其推送到我们的专用 NuGet 存储库。现在,项目 B有一个对项目 A的包引用。但是,当我们想在项目A中开发新功能并在项目B中测试它们时,我们必须打包并推送这些更改。

我们希望避免使用 DLL 引用或任何其他需要开发人员在将更改推送到源代码管理之前记住的解决方案。

有没有简单的方法可以做到这一点?

一个简单的方法?我不知道这一点,但我们基本上遵循杰伊·巴登(Jay Barden(在这篇文章中的步骤。也许类似的方法对您有用?

基本上,每个开发人员都需要在其计算机上设置一个文件夹,该文件夹将用作本地包源。 例如%USERPROFILE%Feeds。然后让每个人都以通常的方式将该文件夹添加为源("选项"菜单下的"包源"(。

然后,在ProjectA中,可以添加一个生成后事件,该事件将自动创建 nuget 包并将其复制到本地源文件夹。您可以使用dotnet pack来创建包,或者确保每个人都在其路径上具有nuget.exe并改用它。打包项目 A时可以包含符号,以便可以轻松地从Project B对其进行调试。创建包后,使用XCOPY*.nupkg文件移动到本地源文件夹。

然后,在Project B中进行测试时,将对PackageA的依赖项更新为本地源中新创建的版本并执行测试。

这听起来可能很多,但设置本地提要是每台机器一次性的事情。构建后事件是每个项目一次性的。完成此操作后,您的开发人员在移动到项目B进行测试之前,无需手动打包和推送ProjectA;当他们构建项目A时,它会自动发生。此外,ProjectA在签入源代码管理并完成发布过程之前,不会推送到您的私有存储库。这样,您的私有存储库就不会被ProjectA的预发布版本或损坏版本填充,而开发人员可以消除更改中的任何错误。

最新更新