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 文件以包含来自其他项目的二进制文件,但是有没有办法让 nuget 自动放置将解决方案输出合并到正确的结构中(并且还检测所有项目中packages.config 中的依赖关系?
Say I have the following solution with multiple versions of the same code each targeting a different framework and I would like to generate a nuget package from it.
SharedLib.sln
SharedLib.Net35.csproj
packages.config
SharedLib.Net40.csproj
packages.config
SharedLib.Phone.csproj
packages.config
SharedLib.SL4.csproj
packages.config
The expected nupkg has the following structure
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
will automatically determine that the target framework is SilverLight4 and place the binaries in lib/sl4
I know I can add a SharedLib.SL4.nuspec
file with a <file>
section to include binaries from the other projects but is there a way to make nuget automatically place the combined solution output into the proper structure (and also detect dependencies in packages.config from all projects?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,除了编写自定义构建脚本将文件放在正确的位置然后对其运行 NuGet pack 或采用您描述的 .nuspec 方法之外,目前没有其他方法可以执行此操作。
这是我们想要的一个功能,但还没有想到一个好的方法。然而,你的帖子只是给了我一个想法。
今天,您可以将 nuget pack 指向 .csproj 文件。
我们可以考虑一种允许您将其指向 .sln 文件的方法,如果项目名称遵循某种约定,我们会将所有项目打包到一个包中。
如果您确实需要此功能,请考虑在 NuGet 问题跟踪器中记录问题。 http://nuget.codeplex.com/workitem/list/basic
No, there's currently no way to do this other than to write a custom build script that puts the files in the right place and then runs NuGet pack on them, or to take the .nuspec approach you described.
This is a feature we'd like to have, but haven't thought of a good way to do it. However, your post just gave me an idea.
Today, you can point nuget pack at a .csproj file.
We could consider an approach that allowed you to point it at a .sln file and if the project names follow some convention, we'd package all the projects into a single package.
If you really want this feature, consider logging an issue in the NuGet issue tracker. http://nuget.codeplex.com/workitem/list/basic