dotnet pack项目参考

我非常喜欢在几个程序集之间分离function,例如,外观到数据提供程序,数据提供程序的合同以及数据提供程序实现本身…在我看来,它可以轻松地对单个组件进行unit testingfunction和将来很容易换掉一件事(在我的例子中,它使数据提供者易于更换)。

如果我使用3个项目创建解决方案并使用项目引用,那么当我在入口程序集上构建dotnet时,所有引用都将复制到输出文件夹中。 当我通过dotnet打包条目汇编项目来创建NuGET包时,NuGET包中只包含条目组件(而不是契约或数据提供者)

这似乎是设计上的; .NET Core dotnet-pack的文档说明了这一点

项目到项目引用未打包在项目中。 目前,如果您具有项目到项目的依赖关系,则每个项目必须有一个包。

我的问题是 – 为什么会这样? 如果我想将我的代码分成逻辑程序集,我不得不创建单独的NuGET包并引用它们,或者只是将我的所有代码都集成到一个程序集中。 有没有办法在NuGET包中包含项目引用?

我正在使用VS2017 / .NET Core v1.1(csproj,而不是xproj)

实现所需的可能方法是使用自定义.nuspec文件,您可以在其中指定要打包的dll

  App.nuspec  

有了这个, dotnet pack将生成与MyPackage.nuspec的包。

此外,如果您有3个具有契约和实现的项目,并且您不想添加3个包引用,则可以创建一个元数据包,该元数据包只包含那些3作为依赖项并引用该单个元数据包。