如何从多个项目创建多目标 nuget 包
How to create a multi-targeting nuget package from multiple projects
我有一堆帮助程序 类 用于我们想要跨 .NET Framework 应用程序、标准程序集和 .NET Core 应用程序使用的 Web 应用程序。
我想将它们构建为可以安装在任何地方的 Nuget 包,并为使用应用程序的目标框架带来正确的引用。
我在 nuspec 文件中尝试了以下内容:
<files>
<file src="**.dll" target="lib" />
<file src="..\Utils.Web.Core\bin\Release\*.dll" target="lib\netcoreapp2.1" />
<file src="..\Utils.Web.Fx\bin\Release\*.dll" target="lib\net461" />
</files>
<references>
<group targetFramework="netstandard2.0">
<reference file="Utils.Web.dll" />
</group>
<group targetFramework="net461">
<reference file="Utils.Web.Fx.dll" />
<reference file="Utils.Web.dll" />
</group>
<group targetFramework="netcore45">
<reference file="Utils.Web.Core.dll" />
<reference file="Utils.Web.dll" />
</group>-->
</references>
我认为应该做的是将正确的 dll 复制到正确的目标 .lib 文件夹并引用这些程序集。但是最后的 nupkg 不包含任何 .lib 文件夹。
我正在尝试做的事情是否可行,我错过了什么?
引用分组不能与文件列表混合,请查看nuget spec文件的模式定义,
.nuspec reference - Explicit assembly reference
The group format cannot be intermixed with a flat list.
我可以使用以下规范创建和使用 nuget pacakge,
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>package_id</id>
<!-- other metadata element -->
<references>
<group targetFramework="net461">
<reference file="Utils.Web.dll" />
<reference file="Utils.Web.Fx.dll" />
</group>
<group targetFramework="netcoreapp2">
<reference file="Utils.Web.dll" />
<reference file="Utils.Web.Core.dll" />
</group>
</references>
</metadata>
<files>
<file src="bin\Debug\netcoreapp2\Utils.Web.Core.dll" target="lib" />
<file src="bin\Debug\net461\Utils.Web.Fx.dll" target="lib" />
<file src="bin\Debug\Utils.Web.dll" target="lib" />
</files>
</package>
考虑使用文件元素的 target 属性或 **使用引用明确地将它们分组 **。
我有一堆帮助程序 类 用于我们想要跨 .NET Framework 应用程序、标准程序集和 .NET Core 应用程序使用的 Web 应用程序。
我想将它们构建为可以安装在任何地方的 Nuget 包,并为使用应用程序的目标框架带来正确的引用。
我在 nuspec 文件中尝试了以下内容:
<files>
<file src="**.dll" target="lib" />
<file src="..\Utils.Web.Core\bin\Release\*.dll" target="lib\netcoreapp2.1" />
<file src="..\Utils.Web.Fx\bin\Release\*.dll" target="lib\net461" />
</files>
<references>
<group targetFramework="netstandard2.0">
<reference file="Utils.Web.dll" />
</group>
<group targetFramework="net461">
<reference file="Utils.Web.Fx.dll" />
<reference file="Utils.Web.dll" />
</group>
<group targetFramework="netcore45">
<reference file="Utils.Web.Core.dll" />
<reference file="Utils.Web.dll" />
</group>-->
</references>
我认为应该做的是将正确的 dll 复制到正确的目标 .lib 文件夹并引用这些程序集。但是最后的 nupkg 不包含任何 .lib 文件夹。
我正在尝试做的事情是否可行,我错过了什么?
引用分组不能与文件列表混合,请查看nuget spec文件的模式定义,
.nuspec reference - Explicit assembly reference
The group format cannot be intermixed with a flat list.
我可以使用以下规范创建和使用 nuget pacakge,
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>package_id</id>
<!-- other metadata element -->
<references>
<group targetFramework="net461">
<reference file="Utils.Web.dll" />
<reference file="Utils.Web.Fx.dll" />
</group>
<group targetFramework="netcoreapp2">
<reference file="Utils.Web.dll" />
<reference file="Utils.Web.Core.dll" />
</group>
</references>
</metadata>
<files>
<file src="bin\Debug\netcoreapp2\Utils.Web.Core.dll" target="lib" />
<file src="bin\Debug\net461\Utils.Web.Fx.dll" target="lib" />
<file src="bin\Debug\Utils.Web.dll" target="lib" />
</files>
</package>
考虑使用文件元素的 target 属性或 **使用引用明确地将它们分组 **。