用于间接引用和非库的Nuget包结构

时间:2017-01-17 09:13:57

标签: c# powershell nuget packages nuget-package

我们开发了一个托管多个模块(dll)的应用服务器。服务器是一个可执行文件,它将所有程序集加载到同一文件夹中,并构建一个包含所有组件的内部容器(Castle.Windsor)。

我们的构建服务器(Jenkins)创建一个包含以下结构的ZIP文件:

+ ApplicationServer\
+ ApplicationServer\Config\
- ApplicationServer\Config\log4net.config
- ApplicationServer\Castle.Windsor.dll
- ApplicationServer\Newtonsoft.Json.dll
- ApplicationServer\Tools.dll
- ApplicationServer\Main.exe

在上层(其他存储库)上,此ZIP文件将添加到名为bundles的文件夹中。几个批处理脚本会将此ZIP提取到以下文件夹结构:

+ Build\ApplicationServer\
+ Build\ApplicationServer\Config\
- Build\ApplicationServer\Config\log4net.config
- Build\ApplicationServer\Castle.Windsor.dll
- Build\ApplicationServer\Newtonsoft.Json.dll
- Build\ApplicationServer\Tools.dll
- Build\ApplicationServer\Main.exe

Main.exe可以直接启动。它将加载同一文件夹中的所有程序集以构建容器。

上层可以向此文件夹添加库以扩展功能。上层的文件夹结构如下所示:

+ Build\... (ApplicationServer)
+ MyProjectLibrary\MyProjectLibrary.csproj
- MyProject.sln

MyProjectLibrary的输出路径是Build\ApplicationServer\文件夹,用于扩展应用程序服务器。 MyProjectLibrary只需要Tools.dll的引用即可实现IApplicationServerExtension

Newtonsoft.Json等库包含在Tools.dll中的类中。因此MyProjectLibrary不需要(也不应该)直接引用Newtonsoft.Json。不应添加引用以使用新的库更改Newtonsoft.Json库。

主要问题是:如何使用nuget创建类似的结构?

想法1

ApplicationServer - 包含所有内容的文件夹打包到nuget-Content文件夹,并添加一个powershell脚本,将所有内容复制到Build\ - 文件夹。

可以使用

安装软件包
nuget install ApplicationServer -OutputDirectory .\packages
powershell .\packages\ApplicationServer.1.0.0\copyToBuild.ps1

0 个答案:

没有答案