Я создал файл .nuspec, который упаковывает кучу файлов .proto для обмена между проектами. Отлично. К сожалению, для создания файлов .proto их необходимо фактически скопировать в каталог проекта, а не просто указать на них. Обратите внимание, что это проект .NET Core.
Сейчас мое определение создает пакет, который при использовании ссылается на файлы в проекте, но эти файлы все еще находятся в исходной папке .Nuget, а это не совсем то, что мне нужно.
Вот определение .nuspec, которое у меня есть прямо сейчас:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>GRPCProtoFiles</id>
<version>1.0.0</version>
<authors>Author</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>.proto files NuGet package.</description>
<dependencies>
<dependency id="Google.Protobuf" version="3.14.0"/>
<dependency id="Grpc" version="2.35.0"/>
</dependencies>
<contentFiles>
<files include="any/any/Protos/**/*.proto" buildAction="None" copyToOutput="false" />
</contentFiles>
</metadata>
<files>
<file src="**\*.proto" target="contentFiles\any\any\Protos" exclude="google\**" />
</files>
</package>
Я знаю, что для действия сборки в настоящее время установлено значение «Нет», но я могу исправить это, как только файлы попадут в правильную папку после установки пакета. Как есть, если я попытаюсь установить правильное действие сборки для прото-файлов (то есть Protobuf Compiler), я получаю сообщение об ошибке, потому что файлы находятся не там, где они должны быть.
Что я делаю неправильно?
РЕДАКТИРОВАТЬ:
Хорошо, я немного прочитал о том, что может происходить и почему. В частности, этот ответ дал мне много понимания. Однако я остаюсь в недоумении, как я могу на самом деле делать то, что мне нужно. Прямо сейчас кажется, что то, что я хочу сделать с NuGet, невозможно, и я использую не тот инструмент для работы. Но помимо этого ограничения NuGet кажется идеальным - он может выбирать только файлы .proto из исходного проекта и просто публиковать их, а не предварительно созданные библиотеки для различных целевых систем.
Я мог бы, возможно, добавить действие перед сборкой для копирования файлов в каталог проекта, но я не знаю, как ссылаться на исходную папку пакета NuGet (особенно, если версия изменится). Есть идеи, есть ли у этой проблемы решение?