Nuget—使用多个项目打包解决方案(针对多个框架)

Nuget—使用多个项目打包解决方案(针对多个框架),nuget,Nuget,假设我有以下解决方案,其中有多个版本的相同代码,每个版本针对不同的框架,我想从中生成一个nuget包 SharedLib.sln SharedLib.Net35.csproj packages.config SharedLib.Net40.csproj packages.config SharedLib.Phone.csproj packages.config SharedLib.SL4.csproj packages.config 预期的nup

假设我有以下解决方案,其中有多个版本的相同代码,每个版本针对不同的框架,我想从中生成一个nuget包

SharedLib.sln
  SharedLib.Net35.csproj
    packages.config
  SharedLib.Net40.csproj
    packages.config
  SharedLib.Phone.csproj
    packages.config
  SharedLib.SL4.csproj
    packages.config
预期的nupkg具有以下结构

SharedLib.1.0.nupkg
  lib/net35/SharedLib.dll
  lib/net40/SharedLib.dll
  lib/sl4-wp/SharedLib.dll
  lib/sl4/SharedLib.dll
nuget.exe pack SharedLib.SL4.csproj
将自动确定目标框架是SilverLight4,并将二进制文件放入
lib/SL4


我知道我可以添加一个带有
部分的
SharedLib.SL4.nuspec
文件,以包含来自其他项目的二进制文件,但是有没有办法让nuget自动将组合的解决方案输出放入适当的结构中(并检测所有项目在packages.config中的依赖关系?

不,目前除了编写一个自定义构建脚本,将文件放在正确的位置,然后在其上运行NuGet pack,或者采用您描述的.nuspec方法之外,没有其他方法可以做到这一点

这是一个我们想要的功能,但是还没有想到一个好的方法。然而,你的帖子给了我一个想法

今天,您可以将nuget pack指向.csproj文件

我们可以考虑一种方法,允许您将它指向.SLN文件,如果项目名称遵循某种约定,我们将所有的项目打包成一个包。


如果你真的想要这个特性,考虑在NuGET问题跟踪器中记录一个问题。

我可能只是这样做,虽然我还没有完全弄清楚我想要的是什么:1.将nuget指向一个解决方案并让它解决所有问题是很好的2.如果生成的包中的不同框架版本可能具有不同的依赖关系,那就很好了。例如,WP版本可能需要一个额外的包来提供不属于WP核心的类型。我现在将您的答案标记为已接受我想在这个问题上多想想。在sln上运行nuget pack会很好。我想在一个包中打包一组相关的程序集,使管理它们比单独的程序包更容易。它们彼此不依赖。这是一个如此成功的原因,因为构建服务器非常方便构建和发布程序包对于单个项目,但当您需要上述内容时,这将成为一场噩梦。对我来说,还缺少一些关键故事,这使得整个功能变得多余。谁不需要为每个CLR打包?这仍然不受支持吗?