我有一堆用于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元素的目标属性,或者使用引用 ** 显式分组它们。