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

Jes*_*det 17 nuget

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

SharedLib.sln
  SharedLib.Net35.csproj
    packages.config
  SharedLib.Net40.csproj
    packages.config
  SharedLib.Phone.csproj
    packages.config
  SharedLib.SL4.csproj
    packages.config
Run Code Online (Sandbox Code Playgroud)

预期的nupkg具有以下结构

SharedLib.1.0.nupkg
  lib/net35/SharedLib.dll
  lib/net40/SharedLib.dll
  lib/sl4-wp/SharedLib.dll
  lib/sl4/SharedLib.dll
Run Code Online (Sandbox Code Playgroud)

nuget.exe pack SharedLib.SL4.csproj 将自动确定目标框架是SilverLight4并将二进制文件放入 lib/sl4

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

Haa*_*ked 9

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

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

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

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

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

  • 在sln上运行nuget pack会很棒.我想在一个包中打包一组相关的程序集,以便比单独的包更容易管理它们.他们不依赖于彼此. (4认同)
  • 之所以取胜,是因为构建服务器非常便于构建和发布单个项目的软件包,但在需要上述内容时会成为一场噩梦.对我而言,还有一些关键的故事缺失,使整个功能变得多余.谁*不需要为每个CLR打包? (2认同)