我非常喜欢在几个程序集之间分离功能,例如,数据提供程序的外观,数据提供程序的合同以及数据提供程序实现本身......在我看来,它可以轻松地对单个组件进行单元测试一个功能部件,将来很容易换掉一件事(在我的例子中,它使数据提供者易于换出)。
如果我使用3个项目创建解决方案并使用项目引用,当我在入口程序集上构建dotnet时,所有引用都将复制到输出文件夹。当我在dotnet打包条目汇编项目以创建NuGET包时,NuGET包中只包含条目组件(不是合同或数据提供者)
这似乎是设计上的; .NET Core dotnet-pack的documentation表示
项目到项目引用未打包在项目中。 目前,如果您有项目到项目的依赖关系,则每个项目必须有一个包。
我的问题是 - 为什么会这样?如果我想将我的代码分成逻辑程序集,我不得不创建单独的NuGET包并引用它们,或者简单地将我的所有代码都集成到一个程序集中。有没有办法在NuGET包中包含项目引用?
我正在使用VS2017 / .NET Core v1.1(csproj,而不是xproj)
答案 0 :(得分:3)
实现所需的可能方法是使用自定义.nuspec
文件,您可以在其中指定要打包的dll
<PropertyGroup>
<NuspecFile>App.nuspec</NuspecFile>
</PropertyGroup>
有了这个,dotnet pack
将生成与MyPackage.nuspec
相关的包。
此外,如果您有3个具有合同和实现的项目并且您不想添加3个包引用,那么您可以创建一个只包含那些3作为依赖项的元数据包并引用该单个元数据包