У меня проблемы с копированием файлов NuGet для вывода с помощью интерфейса командной строки NuGet v4.
Моя структура каталогов выглядит так:
repo
repo\CodeAnalyzer.nuspec
repo\CodeAnalyzer.props
repo\contentFiles\any\any\StyleCop.ruleset
Вот мой файл CodeAnalyzer.props:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PackageName>CodeAnalyzer</PackageName>
<PackageVersion>0.1.0</PackageVersion>
</PropertyGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>StyleCop.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>
И файл CodeAnalyzer.nuspec:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>CodeAnalyzer</id>
<description>Provides standard code analyzer tooling and customisation.</description>
<authors>Me</authors>
<version>0.1.0</version>
<dependencies>
<dependency id="StyleCop.Analyzers" version="1.1.118" />
</dependencies>
<contentFiles>
<files include="any/any/*" buildAction="Content" copyToOutput="true" flatten="false" />
</contentFiles>
</metadata>
<files>
<file src="contentFiles\any\any\StyleCop.ruleset" target="contentFiles" />
<file src="CodeAnalyzer.props" target="build" />
</files>
</package>
В CLI я упаковываю, используя:
.\nuget.exe pack .\CodeAnalyzer.nuspec
В полученном .nupkg есть каталог contentFiles с файлом StyleCop.ruleset, так что это работает.
Если я затем устанавливаю пакет в проект, он отлично улавливает зависимость StyleCop.Analyzers и ищет файл StyleCop.ruleset, поэтому файл .props в порядке.
Но файл StyleCop.ruleset никуда не помещается.
Похоже, я много раз пытался изменить buildActions на None / Content, copyToOutput на true / false, разные пути для элемента contentFiles.file и элемента file.file.
Изменить: потребляющий проект использует PackageReferences для пакетов NuGet, а не packages.config.