dotnet pack项目参考

时间:2017-05-25 10:35:28

标签: c# .net-core nuget-package project-reference

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

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

这似乎是设计上的; .NET Core dotnet-pack的documentation表示

  

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

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

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

1 个答案:

答案 0 :(得分:3)

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

<PropertyGroup>
    <NuspecFile>App.nuspec</NuspecFile>
</PropertyGroup>

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

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