Nuget在解决方案中打包所有子项目

问题描述:

我有一个包含多个项目的解决方案。项目结构如下。Nuget在解决方案中打包所有子项目

/root 
A.sln 
A.nuspec 
/ProjectB 
    projectB.csprj 
    projectB.nuspec 
/ProjectC 
    projectC.csprj 
    projectC.nuspec 

我有几个问题。

1-如果我在根文件夹中运行nuget pack A.nuspec会发生什么情况。有没有办法在解决方案中打包所有项目?

2-当我发送代码TFS,与“NuGet Packager”,我可以使用正则表达式打包所有子项目,如下所示。有没有办法在本地环境中使用这样的正则表达式。

enter image description here

3-是否有可能创建一个nupkg包含两个子工程。

4-是否有可能创建一个nupkg包含多个DLL。我可以将项目的所有依赖项都放入nupkg中吗?

1-如果我在根文件夹中运行nuget pack A.nuspec会发生什么情况。有没有办法在解决方案中打包所有项目?

我不相信有一种方法通过使用.nupsec打包解决方案中的所有项目。这是因为创建包的过程始终始于创建描述包内容的.nuspec包清单文件。这个清单驱动包的创建以及在将安装到项目中时的使用情况,而不是解决方案。并且ID和版本在.nupsec中必须是唯一的,所以我们不能使用唯一的ID和版本来指定多个项目。

2-当我发送代码TFS和“NuGet Packager”时,我可以使用正则表达式打包所有子项目,如下所示。有没有办法在本地环境中使用这样的正则表达式。

答案是否定的。我已经在本地机器上测试了它,通配符在命令行中被视为非法字符

3-是否可以创建一个nupkg包含两个子项目。

如果我正确理解你,你的意思是子项目是参考项目?如果是的话,答案是肯定的。您可以使用选项“IncludeReferencedProjects”将引用的项目包含为依赖项或包的一部分。详情请参阅this document

4-是否有可能创建一个nupkg包含多个dll。我可以将项目的所有依赖项都放入nupkg中吗?

当然可以。你可以参考我已经回答的another thread了解更多细节。如果要将项目的所有依赖项都放入nupkg中,则可以使用<dependencies>将所有依赖项包含在.nuspec中。

<dependencies> 
     <dependency id="Newtonsoft.Json" version="9.0" /> 
    </dependencies>