Azure devops 如何让Azure DevOps为.net标准2.0项目创建正确的nuspec?

Azure devops 如何让Azure DevOps为.net标准2.0项目创建正确的nuspec?,azure-devops,.net-standard,Azure Devops,.net Standard,通过右键单击VS2019中的项目并选择pack,我可以为我的.net标准2.0库创建适当的nuget包 .nuspec包含 <?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id>SBD.Standard</id>

通过右键单击VS2019中的项目并选择pack,我可以为我的.net标准2.0库创建适当的nuget包

.nuspec包含

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>SBD.Standard</id>
    <version>1.0.0</version>
    <authors>SBD.Standard</authors>
    <owners>SBD.Standard</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package Description</description>
    <dependencies>
      <group targetFramework=".NETStandard2.0">
        <dependency id="Microsoft.Data.SqlClient" version="1.1.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.EntityFrameworkCore" version="3.1.1" exclude="Build,Analyzers" />
        <dependency id="Microsoft.EntityFrameworkCore.SqlServer" version="3.1.1" exclude="Build,Analyzers" />
        <dependency id="Newtonsoft.Json.Schema" version="2.0.7" exclude="Build,Analyzers" />
        <dependency id="RestSharp" version="106.10.0" exclude="Build,Analyzers" />
        <dependency id="System.Data.SqlClient" version="4.6.1" exclude="Build,Analyzers" />
      </group>
    </dependencies>
  </metadata>
</package>
然后,我查看它所包含的创建包的.nuspec文件

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
  <metadata>
    <id>SBD.Standard</id>
    <version>2.0.0-CI-20200212-174043</version>
    <title>SBD.Standard</title>
    <authors>SBD.Standard</authors>
    <owners>SBD.Standard</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Description</description>
    <dependencies />
  </metadata>
</package>
如何让Devops创建正确的.nuspec文件

如何让Azure DevOps为.net标准2.0项目创建正确的nuspec

经过与Kirsten Greed的长期故障排除,我们找到了答案

我们解决以下YAML问题,以便为.net标准2.0项目重新生成nuget包:

trigger: none
pool:
  vmImage: vs2017-win2016

steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: restore
    projects: xxxx/xxx.csproj
    vstsFeed: 'XXXXXXX'

- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    projects: xxx/xxx.csproj
    arguments: '/p:Configuration=Release'

- task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: pack
    packagesToPack: xxx/xxx.csproj

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
然后,我们可以在解压缩生成的包之后检查.nuspec文件

此外,我们还可以使用nuget push任务将生成的包发布到提要中,如:

- task: DotNetCoreCLI@2
displayName: 'dotnet push'
inputs:
command: push
publishVstsFeed: 'XXXX'

希望这有帮助。

您使用的.net核心版本是什么?我使用.net core 3.1.101在本地和devops中测试它,包中的.nuspec文件是正确的,包括依赖项。我不认为我使用的是.net core。目标框架是.netstandard2.0,但正如您所说,您使用dotnetcore任务来打包包,它将使用.netcore。我在Azure Devops中使用免费托管代理。如何找到.net核心版本?我还注意到在我的项目文件中有一些不可能有帮助的东西!False该属性用于在生成项目时禁用生成nuget包。如果您有任何其他问题,请打开一个包含详细信息的新线程。
- task: DotNetCoreCLI@2
displayName: 'dotnet push'
inputs:
command: push
publishVstsFeed: 'XXXX'