Nuget - 打包一个包含多个项目的解决方案(针对多个框架)

时间:2011-09-27 13:09:58

标签: nuget

假设我有以下解决方案,其中包含相同代码的多个版本,每个版本都针对不同的框架,我想从中生成一个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部分的<file>文件来包含来自其他项目的二进制文件,但有没有办法让nuget自动将组合的解决方案输出放入适当的结构中(和还从所有项目中检测packages.config中的依赖项?

1 个答案:

答案 0 :(得分:9)

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

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

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

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

如果您确实需要此功能,请考虑在NuGet问题跟踪器中记录问题。 http://nuget.codeplex.com/workitem/list/basic