xbuild не встраивает ресурсы из общего проекта

У меня есть проект C# A, расположенный в FolderA, который ссылается на общий проект B. Файлы общего проекта находятся в FolderB. Общий проект B содержит файл C.gz со свойствами

Встроенный ресурс Build Action
Копировать в выходной каталог Не копировать

Когда я пытаюсь построить проект A с использованием xbuild (в частности, версий 4.8 и 4.8.1, архитектуры x86 и x64):

xbuild A.csproj

Я получаю следующую ошибку сборки:

C: \ Program Files (x86) \ Mono \ lib \ mono \ xbuild \ 14.0 \ bin \ Microsoft.Common.targets (цель CopyNonResxEmbeddedResources) ->

C: \ Program Files (x86) \ Mono \ lib \ mono \ xbuild \ 14.0 \ bin \ Microsoft.Common.targets: error: невозможно скопировать FolderA\C.gz в FolderA\obj\Release\C.gz в качестве источника файл не существует

то есть xbuild выполняет поиск файла встроенного ресурса в FolderA, хотя он, очевидно, находится в FolderB вместе с другими файлами общего проекта B.

Я не могу переместить файл встроенного ресурса в проект A, поскольку на общий проект ссылаются также и на несколько других проектов.

Есть ли что-то еще, что я могу сделать для успешной сборки проекта A с помощью xbuild?


Примечание: это ожидаемое поведение в xbuild или ошибка? С msbuild у меня нет этой проблемы.

1 ответ

Решение

Эта проблема является недостатком в текущей реализации xbuild, поэтому мне нужно было применить обходной путь, специфичный для этой проблемы.

Поскольку xbuild ожидает, что встроенный файл ресурсов будет доступен в папке FolderA, я просто добавляю этап предварительной сборки в файл проекта:

<ItemGroup>
  <FilesToCopy Include="..\FolderB\C.gz" />
</ItemGroup>
<Target Name="BeforeBuild">
  <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="."/>
</Target>

При желании можно также рассмотреть возможность очистки после сборки, удалив скопированный файл в пост-сборке.

Заметка! Чтобы убедиться, что шаг перед сборкой правильно учтен, поместите его после этой строки:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Другие вопросы по тегам