Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从nuspec文件的不同文件夹中包含的多个csproj创建多目标nuget包_C#_.net_Msbuild_Nuget_Packaging - Fatal编程技术网

C# 从nuspec文件的不同文件夹中包含的多个csproj创建多目标nuget包

C# 从nuspec文件的不同文件夹中包含的多个csproj创建多目标nuget包,c#,.net,msbuild,nuget,packaging,C#,.net,Msbuild,Nuget,Packaging,我正在尝试为一个库创建一个nuget包,该库有两个版本,每个版本针对两个不同的.NET版本 以下是我的文件夹结构: 如您所见,我的nuspec文件位于我的csproj之上的一个目录中(位于/net452和/netcoreapp2.0文件夹中) 我正在使用以下命令行构建我的nuget包: nuget包。\my.nuspec-properties配置=Release-Build 问题是无法实现生成,因为csproj文件与nuspec文件不在同一文件夹中。 请注意,如果两个项目都是先手动构建的,那么

我正在尝试为一个库创建一个nuget包,该库有两个版本,每个版本针对两个不同的.NET版本

以下是我的文件夹结构:

如您所见,我的nuspec文件位于我的csproj之上的一个目录中(位于/net452和/netcoreapp2.0文件夹中)

我正在使用以下命令行构建我的nuget包:

nuget包。\my.nuspec-properties配置=Release-Build

问题是无法实现生成,因为csproj文件与nuspec文件不在同一文件夹中。

请注意,如果两个项目都是先手动构建的,那么打包就可以正常工作

我对这个过程非常陌生,我不确定在这种情况下我应该做什么,有没有一种简单的方法来引用nuspec中的2 csproj或者-假设我想保留这个文件夹结构-我是否需要先创建一个脚本来构建项目,然后调用nuget pack

编辑:为了澄清我的问题,我有两个不同的csproj文件,分别包含在/net452和/netcoreapp2.0中,它们在各自的目录中编译源代码以生成两个不同的dll。然后在我的nuspec文件中引用这两个dll,以便在net452或netcoreapp2.0中提供具有以下语法的软件包:

  <files>
    <file src="lib\**" target="lib" />
  </files>

注意:在我手动编译了两个项目之后,目录如下所示(注意lib文件夹,其中包含一个net452和netcoreapp2.0文件夹以及相应版本的dll)


不确定理解是否正确-您有一个库,并希望以两个版本(net452和netcore)构建它

是否尝试将以下项目添加到*.csproj

<PropertyGroup>
    <TargetFrameworks>net45;netcoreapp2.0</TargetFrameworks>
</PropertyGroup>

net45;netcoreapp2.0

然后,您可以在项目上使用构建的两个输出

不确定是否正确理解-您有一个库,并希望将其构建为两个版本(net452和netcore)

是否尝试将以下项目添加到*.csproj

<PropertyGroup>
    <TargetFrameworks>net45;netcoreapp2.0</TargetFrameworks>
</PropertyGroup>

net45;netcoreapp2.0

然后您可以在项目上使用构建的两个输出

我没有一个库(dll),我有两个库(因为它们编译的代码不同,所以有两个csproj),它们分别以net452和netcoreapp2.0为目标。不过,我确实想把它们做成一个单独的nuget包。我已经编辑了这个问题以便澄清。那么你为什么不把它们合并成一个csproj呢?您仍然可以在其中包含两个文件夹,并包含不同框架使用条件的.cs文件。(除了可以在代码中使用
#如果NET45
)@MartinUllrich是对的。net核心项目的新.csproj格式可以接受标准的MSBuild语法。因此,您可以将csproj文件组合在一起。我没有一个库(dll),我有两个库(所以有两个csproj,因为它们编译的代码不同),它们分别以net452和netcoreapp2.0为目标。不过,我确实想把它们做成一个单独的nuget包。我已经编辑了这个问题以便澄清。那么你为什么不把它们合并成一个csproj呢?您仍然可以在其中包含两个文件夹,并包含不同框架使用条件的.cs文件。(除了可以在代码中使用
#如果NET45
)@MartinUllrich是对的。net核心项目的新.csproj格式可以接受标准的MSBuild语法。因此,您可以将csproj文件组合在一起。