引用NuGet程序包后,避免在生成输出中使用多个DLL

时间:2018-10-15 19:12:41

标签: c# dll msbuild nuget csproj

我真的不熟悉构建输出,nuget包,dll地狱,库依赖项等。

在将this NuGet package添加到类库之前,在我构建之后,/ bin文件夹中仅生成一个DLL。

添加NuGet软件包后,我在/ bin文件夹中获得了100多个dll。

是否有一种方法只能为c#类库生成一个DLL?

当我需要从旧版应用程序调用类库时,必须复制类库构建输出中的所有dll以避免错误-这有点麻烦。

这是我的.csproj:

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

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Intacct.SDK" Version="2.0.5" />
  </ItemGroup>

</Project>

1 个答案:

答案 0 :(得分:3)

是的,您可以使用ILMerge来做到这一点。 您必须添加其他构建步骤:

<ItemGroup>
    <PackageReference Include="ILMerge" Version="2.15.0" />
  </ItemGroup>

  <Target Name="ILMerge">
    <!-- the ILMergePath property points to the location of ILMerge.exe console application -->
    <Exec Command="$(ILMergeConsolePath) /out:MyApp.exe MyApp.exe lib1.dll lib2.dll" />
</Target>

另请参见Merge DLL into EXE?