如何为 .NET Framework 创建捆绑项目

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

我正在尝试创建一个项目(csproj 文件),该项目引用 NuGet 包源中的多个包,但本身不包含任何源代码(或从空项目内容生成的任何 dll)。

我想创建项目文件,以便可以生成 csproj 文件中引用的包的 dll 捆绑包;我希望以这种方式完成,以便引用的包受到版本控制。

我已经尝试将我的 csproj OutputType 更改为不同的选项并将其设置为 Library 或 Module 似乎会产生与我想要的类似的行为。但是,它仍然会生成一个 pdb 以及一个 dll 或 netmodule 文件,如果可能的话,我想避免这些文件。

我的示例 csproj 文件引用了 Newtonsoft

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Library</OutputType>
        <TargetFramework>net472</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    </ItemGroup>

</Project>

生成一个包含以下内容的文件夹:

  • ClassLibrary.dll(我不想要这个)
  • ClassLibrary.pdb(我不想要这个)
  • Newtonsoft.Json.dll(我想要这个)

我看过

我也尝试过查看 MSBuild 源代码,但没有成功。

c# .net csproj
1个回答
1
投票

您可以定义构建后事件并删除不需要的文件。

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Library</OutputType>
        <TargetFramework>net472</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    </ItemGroup>

    <Target Name="PostBuild" AfterTargets="PostBuildEvent">
       <Exec Command="del $(OutDir)\ClassLibrary.dll" />
       <Exec Command="del $(OutDir)\SomeThingElse.dll" />
    </Target>

</Project>
© www.soinside.com 2019 - 2024. All rights reserved.