如何从多个项目创建多目标 nuget 包



我有一堆用于Web应用程序的帮助程序类,我们希望在.NET Framework应用程序,标准程序集和.NET Core应用程序中使用这些类。

我想将它们构建为可以安装在任何地方的 Nuget 包,并为使用应用程序的目标框架提供正确的引用。

我已经在 nuspec 文件中尝试了以下内容:

<files>
<file src="**.dll" target="lib" />
<file src="..Utils.Web.CorebinRelease*.dll" target="libnetcoreapp2.1" />
<file src="..Utils.Web.FxbinRelease*.dll" target="libnet461" />
</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 参考 - 显式程序集参考

组格式不能与平面列表混合使用。

我可以使用以下规范创建和使用 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="binDebugnetcoreapp2Utils.Web.Core.dll" target="lib" />
<file src="binDebugnet461Utils.Web.Fx.dll" target="lib" />
<file src="binDebugUtils.Web.dll" target="lib" />
</files>
</package>

请考虑使用 File元素的目标属性,或者使用引用 ** 显式分组它们。

相关内容

  • 没有找到相关文章

最新更新