Из файла в виде строки к ссылке на файл в msbuild - PullRequest
1 голос
/ 09 февраля 2012

Фон

Поскольку 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}}"/>

1 Ответ

1 голос
/ 09 февраля 2012

Это не работает:

<Target Name="MyTarget">
  <ItemGroup>
    <_AssembliesToCopy Include="%(Reference.HintPath)" />
  </ItemGroup>
  ...then the Copy task using @(_AssembliesToCopy)
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...