我们有一个项目 A(csproj、netstandard2.0),我们希望将其作为 nuget 包发布。
我们希望在项目 B 中使用此包,使用
为了简化开发,我希望有一个包含这两个项目的解决方案,以便我可以编辑项目 A 的源代码并(重新)编译,以便项目 B 使用项目 A 的最新版本(无需需要)打包项目 A 的新 nupkg(如果可能的话,将其发布到我们的 nuget 包源服务器上))。 (同时仍在我们的构建服务器上使用 nuget)
如何实现这一点?
我搜索了网络和 stackoverflow,但找不到它的工作原理。
谢谢
正如 @Zivkan 所说,由于多种原因,这有点奇怪,但如果你想尝试一下,我认为以下方法会起作用:
您可以在项目中使用条件语句,以便在本地构建时使用项目引用,但在构建机器上构建时,您可以在命令行中指定一个属性来使用包引用。
例如
<Choose>
<When Condition="'$(IsBuildServer)' == 'true'">
<ItemGroup>
<PackageReference Include="A" Version="*" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<ProjectReference Include="relativepath\A.csproj" />
</ItemGroup>
</Otherwise>
</Choose>
然后在构建服务器上构建时,只需确保指定
-p:IsBuildServer=true
作为 msbuild / dotnet build 的命令行参数。
包参考中的“*”仅表示采用最新的可用稳定包,但可能并不完全是您想要的,具体取决于您希望构建服务器构建的内容。
我知道这个问题有点老了,但我留下这个答案是为了帮助未来的同行。
利用 dotnet pack 命令,使用它时您可以添加对 csproj 的直接引用。您唯一需要确定的是使用属性
IsPackable
并且不要在构建过程中生成包。之后, pack 命令会将直接引用更改为包引用。有关更多信息,请检查 dotnet 运行时存储库以了解其使用方式。
可以在此处找到 pack 命令的文档:https://learn.microsoft.com/pt-br/dotnet/core/tools/dotnet-pack