正在寻求将主项目中的所有 dll 放在一个包中,而不是每个 dll/库/cs 项目一个包。基本上,需要打包主项目的bin文件夹的内容。包裹不应该
这里的需要不是必须打包执行,而是通过 LinqPad 引用/使用代码。
背景
用于构建包的 Azure 管道。 CS标准/sdk项目:平台由一个主项目、多个项目引用和包引用组成。
问题 目标不明显,如何实现?
我尝试了不同的方法,但我无法让它只打包 dll。
您会分享哪些技巧来做到这一点?
所以在漫游 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推送命令。
想法?