不包括从.NET Standard中的nuget包构建的库

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

忍受我-这是一个不寻常的情况。我的解决方案中有4个项目。最热门的项目引用了其他3个项目。其他3个项目中没有一个互相引用。所以架构是这样的:

enter image description here

现在,当我构建项目AI时,它希望它生成一个包含项目B,C和D但不包含项目A的nuget包。因为在.NET标准中,我可以配置项目A的packages选项卡以自动生成一个nuget包通过选中“在生成时生成NuGet软件包”选项进行生成时。然后,通过对A的csproj文件进行以下更改,可以使其包含B,C和D:

<ItemGroup>
    <ProjectReference Include="..\B.csproj">
      <PrivateAssets>all</PrivateAssets>
    </ProjectReference>
    <ProjectReference Include="..\C.csproj">
      <PrivateAssets>all</PrivateAssets>
    </ProjectReference>
    <ProjectReference Include="..\D.csproj">
      <PrivateAssets>all</PrivateAssets>
    </ProjectReference>
  </ItemGroup>

  <PropertyGroup>
    <TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
    <Version>1.0.0-beta</Version>
    <PackageId>A</PackageId>
    <Company></Company>
    <Product>A</Product>
    <Description></Description>
    <Authors></Authors>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

  <Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
    <ItemGroup>
      <BuildOutputInPackage    Include="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')-&gt;WithMetadataValue('PrivateAssets', 'all'))" />
    </ItemGroup>
  </Target>

理想情况下,我想添加一行以从nuget软件包中删除A.dll。这可能吗? A是一个包装项目,不需要使用任何消耗代码。 B,C和D不可能互相引用。

nuget .net-standard .net-standard-2.0
1个回答
0
投票

您可以通过使用nuspec文件来实现:

<package >
  <metadata>
    <id>MyPackage</id>
    <version>1.0</version>
    <authors>Something</authors>
    <owners>Something</owners>
    <description>Somthing</description>
    <copyright></copyright>
    <dependencies>
       <!-- any nuget package dependencies -->
       <dependency id="AnotherPackage" version="2019.2.4.1" />
    </dependencies>
  </metadata>
  <files>
    <!-- this is where you can have complete control over which assemblies get added to your package. You can add them individually pr using wildcards. -->
    <file src="..\obj\**\*.dll" target="lib" />
  </files>
</package>

创建完.nuspec文件后,将其添加到解决方案中,然后使您的“ Nuget Pack”构建步骤读取nuspec文件而不是项目文件。

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