Adicionando bibliotecas compiladas a um pacote NuGet

· 1 min de leitura

Outro dia encontrei um bug sobre um NullReferenceException em uma biblioteca ausente que deveria estar lá, pois vem de um pacote nuget que carregamos.

Basicamente, compilei uma classe de biblioteca que fazia referência a alguns projetos. Na fase de construção, ele adicionaria os arquivos dll à pasta bin, mas quando packaging fosse um pacote nuget e os instalasse em outra solução, os arquivos dll que mencionei e deveriam ser copiados para a pasta bin, não estão lá.

Como resolver

Resolver este problema é bem simples, você tem que atualizar o arquivo nuspec e para cada uma das bibliotecas que deseja copiar, adicione o file na parte files.

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <projectUrl>$projectUrl$</projectUrl>
    <iconUrl>$projectIconUrl$</iconUrl>
    <description>$description$</description>
    <releaseNotes></releaseNotes>
    <copyright>$copyright$</copyright>
    <tags></tags>
  </metadata>
  <files>
        <file src="bin\Release\MyFile1.dll" target="lib\net47" />
        <file src="bin\Release\MyFile2.dll" target="lib\net47" />
        <file src="bin\Release\MyFile3.dll" target="lib\net47" />
        <file src="bin\Release\MyFile4.dll" target="lib\net47" />
   </files>
</package>