Папка lib
для этого не подходит, потому что она используется для сборок, на которые ваш проект ссылается при установке пакета. Кроме того, структура папок должна содержать подходящую целевую структуру папку, например net472
. Вы не можете размещать сборки непосредственно под lib
.
<file src="traefik.exe" target="lib/net472"/>
Если вы хотите рассматривать свой исполняемый файл как файл с чистым содержимым, вы можете использовать contentFiles
.
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Traefik</id>
<version>1.5.1</version>
<authors>Containous</authors>
<owners>MikeC</owners>
<projectUrl>https://github.com/containous/traefik</projectUrl>
<license type="expression">MIT</license>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Traefik binaries</description>
<copyright>Copyright ©2020 Containous</copyright>
<contentFiles>
<files include="any/any/traefik.exe" buildAction="None" copyToOutput="true"/>
</contentFiles>
</metadata>
<files>
<file src="traefik.exe" target="contentFiles/any/any/traefik.exe"/>
<file src="traefik.exe" target="content/traefik.exe"/>
</files>
</package>
Таким образом , traefik.exe
будет скопирован прямо в вашу выходную папку. Внутри вашего пакета структура папок будет такой. Эта структура папок предопределена для файлов содержимого.
content
- traefik.exe
contentFiles
- any
- any
- traefik.exe
С помощью этого подхода вы даже можете настроить таргетинг на отдельные или несколько структур. Допустим, у вас есть специальный исполняемый файл для. NET Framework 4.7.2, а затем адаптируйте второй any
к своему названию целевой платформы , здесь net472
. Исполняемый файл будет скопирован в вашу выходную папку только в том случае, если фреймворк соответствует фреймворку вашего проекта.
<files include="any/net472/traefik.exe" buildAction="None" copyToOutput="true" flatten="true"/>
<file src="traefik.exe" target="contentFiles/any/net472/traefik.exe"/>
Конечно, вы можете определить несколько исполняемых файлов для разных фреймворков, подобных этой. Несколько замечаний о файле NuSpe c. Исполняемый файл также копируется в папку content
вашего пакета для обратной совместимости, поскольку contentFiles
поддерживается только с NuGet 4.0 с использованием PackageReference
.