Фон
Поскольку CopyLocal=true
вызывает большое замедление сборки по мере увеличения размеров проектов и решений (см. здесь ), я пытаюсь найти хороший основанный на соглашенияхРешение, которое работает с nuget и выполняет инкрементную сборку, копируя только сборки и связанные с ними файлы, когда это необходимо, понравилось в pdb.именно так, как мне нужно.В новой сборке он копирует файлы:
CopyReferencedAssemblies:
Creating hard link to copy "..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll" to "..\..\build\bin\Debug\Moq.dll".
Creating hard link to copy "..\..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll" to "..\..\build\bin\Debug\nunit.framework.dll".
CopyFilesRelatedToReferencedAssemblies:
Building target "CopyFilesRelatedToReferencedAssemblies" partially, because some output files are out of date with respect to their input files.
Creating hard link to copy "c:\Project\packages\Moq.4.0.10827\lib\NET40\Moq.pdb" to "..\..\build\bin\Debug\Moq.pdb".
Creating hard link to copy "c:\Project\packages\Moq.4.0.10827\lib\NET40\Moq.xml" to "..\..\build\bin\Debug\Moq.xml".
Creating hard link to copy "c:\Project\packages\NUnit.2.5.10.11092\lib\nunit.framework.xml" to "..\..\build\bin\Debug\nunit.framework.xml".
А когда файлы обновлены, он ничего не делает:
CopyReferencedAssemblies:
Skipping target "CopyReferencedAssemblies" because all output files are up-to-date with respect to the input files.
CopyFilesRelatedToReferencedAssemblies:
Skipping target "CopyFilesRelatedToReferencedAssemblies" because all output files are up-to-date with respect to the input files.
Вопрос
Проблема с моим текущим решением заключается в том, что мне пришлось дублировать значение, уже предоставленное HintPath
, включенным в ссылки на проект:
<Reference Include="Moq">
<HintPath>..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
<Private>False</Private>
</Reference>
Стало дополнительным:
<_AssembliesToCopy Include="..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll" />
Как преобразовать набор строк, найденных в %(Reference.HintPath)
, в ссылки на файлы?В идеале мне нужна команда, которую я могу просто назначить _AssembliesToCopy
:
<_AssembliesToCopy Include="{{Change %(Reference.HintPath) to file ref}}"/>