C# NUGET包自动复制依赖项

在csproj中配置如下内容:

<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>

以及这个:

复制代码
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="BuildOnlySettings;ResolveReferences">
    <ItemGroup>
        <!-- Filter out unnecessary files -->
        <_ReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')-&gt;WithMetadataValue('PrivateAssets', 'All'))" />
    </ItemGroup>

    <!-- Print batches for debug purposes -->
    <Message Text="Batch for .nupkg: ReferenceCopyLocalPaths = @(_ReferenceCopyLocalPaths), ReferenceCopyLocalPaths.DestinationSubDirectory = %(_ReferenceCopyLocalPaths.DestinationSubDirectory) Filename = %(_ReferenceCopyLocalPaths.Filename) Extension = %(_ReferenceCopyLocalPaths.Extension)" Importance="High" Condition="'@(_ReferenceCopyLocalPaths)' != ''" />

    <ItemGroup>
        <!-- Add file to package with consideration of sub folder. If empty, the root folder is chosen. -->
        <BuildOutputInPackage Include="@(_ReferenceCopyLocalPaths)" TargetPath="%(_ReferenceCopyLocalPaths.DestinationSubDirectory)" />
    </ItemGroup>
</Target>
复制代码

    以下是我用的一个nuget包的完整配置,可供参考:

复制代码
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
      <TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
      <LangVersion>preview</LangVersion>
      <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
      <Title>bodong.Avalonia.PropertyGrid</Title>
      <Version>11.0.4.0</Version>
      <Authors>bodong</Authors>
      <Description>A  PropertyGrid control implementation for Avalonia</Description>
      <PackageProjectUrl>https://github.com/bodong1987/Avalonia.PropertyGrid</PackageProjectUrl>
      <RepositoryUrl>https://github.com/bodong1987/Avalonia.PropertyGrid.git</RepositoryUrl>
      <RepositoryType>git</RepositoryType>
      <PackageTags>Avalonia;PropertyGrid;AvaloniaControls</PackageTags>
      <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="Assets\Localizations\en-US.json" />
    <None Remove="Assets\Localizations\ru-RU.json" />
    <None Remove="Assets\Localizations\zh-CN.json" />
  </ItemGroup>

  <ItemGroup>
    <AvaloniaResource Include="Assets\Localizations\en-US.json" />
    <AvaloniaResource Include="Assets\Localizations\ru-RU.json" />
    <AvaloniaResource Include="Assets\Localizations\zh-CN.json" />
  </ItemGroup>

  <ItemGroup>
    <None Include="..\README_NUGET.md">
      <Pack>True</Pack>
      <PackagePath>\</PackagePath>
    </None>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" Version="11.0.4" />
    <PackageReference Include="Avalonia.Controls.ColorPicker" Version="11.0.4" />
    <PackageReference Include="Avalonia.Diagnostics" Version="11.0.4" />
    <PackageReference Include="System.Reactive" Version="6.0.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\PropertyModels\PropertyModels.csproj" PrivateAssets="All">
    </ProjectReference>
  </ItemGroup>

  <ItemGroup>
    <Compile Update="Controls\BindiListElementPlaceholderEdit.axaml.cs">
      <DependentUpon>BindiListElementPlaceholderEdit.axaml</DependentUpon>
    </Compile>
  </ItemGroup>
    
    <PropertyGroup>
        <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
        <PackageId>bodong.Avalonia.PropertyGrid</PackageId>
        <Product>bodong.Avalonia.PropertyGrid</Product>
        <PackageLicenseExpression>MIT</PackageLicenseExpression>
        <IncludeSymbols>False</IncludeSymbols>
        <PackageReadmeFile>README_NUGET.md</PackageReadmeFile>
        <GenerateDocumentationFile>True</GenerateDocumentationFile>
        <Nullable>disable</Nullable>
    </PropertyGroup>

    <Target Name="CopyProjectReferencesToPackage" DependsOnTargets="BuildOnlySettings;ResolveReferences">
        <ItemGroup>
            <!-- Filter out unnecessary files -->
            <_ReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')-&gt;WithMetadataValue('PrivateAssets', 'All'))" />
        </ItemGroup>

        <!-- Print batches for debug purposes -->
        <Message Text="Batch for .nupkg: ReferenceCopyLocalPaths = @(_ReferenceCopyLocalPaths), ReferenceCopyLocalPaths.DestinationSubDirectory = %(_ReferenceCopyLocalPaths.DestinationSubDirectory) Filename = %(_ReferenceCopyLocalPaths.Filename) Extension = %(_ReferenceCopyLocalPaths.Extension)" Importance="High" Condition="'@(_ReferenceCopyLocalPaths)' != ''" />

        <ItemGroup>
            <!-- Add file to package with consideration of sub folder. If empty, the root folder is chosen. -->
            <BuildOutputInPackage Include="@(_ReferenceCopyLocalPaths)" TargetPath="%(_ReferenceCopyLocalPaths.DestinationSubDirectory)" />
        </ItemGroup>
    </Target>

</Project>
复制代码

 

posted @   bodong  阅读(316)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示