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

时间:2018-08-10 07:03:13

标签: .net-core nuget-package .net-standard-2.0 nuspec

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

我想将它们构建为可以安装在任何地方的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文件夹。

我想做的是可能的,我想念的是什么吗?

1 个答案:

答案 0 :(得分:0)

不能将引用分组与文件列表混在一起,请查看nuget spec文件的架构定义,

.nuspec reference - Explicit assembly reference

  

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

我可以使用以下规范创建和使用nuget pacakge,

String src = " 8 2 /  5";
String Regex = @"([1-9])([0-9]*)([ ])([1-9])([0-9]*)((.)([0-9]+)|)([ ])([- / + *]){1}([ ])([1-9])([0-9]*)((.)([0-9]+)|)";

if(!Regex.IsMatch(src , Regex ))
   return;


float Base = float.Parse(Base.Split(" ")[0], CultureInfo.InvariantCulture.NumberFormat);
float Devided= float.Parse(Base.Split(" ")[1], CultureInfo.InvariantCulture.NumberFormat);
float Operator= float.Parse(Base.Split(" ")[2], CultureInfo.InvariantCulture.NumberFormat);
float Denominator= float.Parse(Base.Split(" ")[3], CultureInfo.InvariantCulture.NumberFormat);

//TODO your operation here

考虑使用文件元素的 target 属性,或**使用引用**对它们进行显式分组。