如何用csproj的所有dll(包括PackageReference和ProjectReference)生成nupkg?

问题描述 投票:0回答:1

正在寻求将主项目中的所有 dll 放在一个包中,而不是每个 dll/库/cs 项目一个包。基本上,需要打包主项目的bin文件夹的内容。包裹不应该

  • 具有依赖关系,因为所有内容都已打包。
  • 有任何文件内容
  • 在构建时生成

这里的需要不是必须打包执行,而是通过 LinqPad 引用/使用代码。

背景

用于构建包的 Azure 管道。 CS标准/sdk项目:平台由一个主项目、多个项目引用和包引用组成。

问题 目标不明显,如何实现?

我尝试了不同的方法,但我无法让它只打包 dll。

您会分享哪些技巧来做到这一点?

c# azure-devops nuget-package
1个回答
0
投票

所以在漫游 git/stackoveflow 的土地后我想出了这个

我尝试将这一点添加到主项目 csproj 中,在

<Project Sdk="MSBuild.SDK.SystemWeb">

<!-- Packaging for LPs -->
  <PropertyGroup>
    <PackageId>NAME OF THE PACKAGE TO GENERATE</PackageId>
    <Authors>THE AUTHOR</Authors>
    <Company>THE COMPANY NAME</Company>
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
    <NuspecProperties>version=$(PackageVersion)</NuspecProperties>
    <SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
    <IncludeContentInPack>false</IncludeContentInPack>
  </PropertyGroup>
  <PropertyGroup>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);GetTheFiles</TargetsForTfmSpecificBuildOutput>
  </PropertyGroup>
  <Target DependsOnTargets="ResolveReferences" Name="GetTheFiles">
    <ItemGroup>
      <BuildOutputInPackage Include="$(OutputPath)\*.dll">
      </BuildOutputInPackage>
    </ItemGroup>
  </Target>

在 azure CI Pipeline 中,我创建了一个包含这些任务的新构建

任务 1 - 使用 NuGet 恢复解决方案 (.sln)

任务 2 - 使用 Powershell 通过 CI 写入主机上声明的变量设置内部版本号“##vso[build.updatebuildnumber]$(AssemblyBuildNumber).$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyRevisionNumber )" 这很重要,因为它将在 version=$(PackageVersion) 中初始化 PackageVersion。 PackageVersion 是保留属性。

任务 3 - 使用 Visual Studio 构建 (VsBuild@1) 构建并打包主 csproj

- task: VSBuild@1
  displayName: 'Name of the Task'
  inputs:
    solution: PathToProj/MySite.csproj
    msbuildArgs: '/p:SkipInvalidConfigurations=true /t:pack /p:PackageVersion="$(Build.BuildNumber)" /p:BuildAuthorizer=$(Build.RequestedForEmail) /p:langversion=latest'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    maximumCpuCount: true

任务 4 - 使用 .Net Core 推送到 Az Artifacts。选择nuget推送命令。

想法?

© www.soinside.com 2019 - 2024. All rights reserved.