2015-04-08 3 views
0

мне нужен проект, который будет построен в папку:Укажите имя каталога сборки

\bin\Debug 1.0.3.4 

Где 1.0.3.4 это текущая версия здания сборки указано в assembly: AssemblyVersion атрибута.
Я пробовал использовать разные переменные, такие как $(AssemblyVersion), GetAssemblyIdentity задача, но мне не повезло .. Я не очень хорошо использую MSBuild.

+0

Каков атрибут выходного пути, указанный в конфигурации отладки вашего файла csproj? – Chirac

+0

Вы имеете в виду, что номер '1.0.3.4' доступен только в виде строки внутри файла .cs? – stijn

+0

В вашем csproj вы должны найти атрибут выходного пути в своей конфигурации отладки. Какова его ценность? Выгрузите проект, отредактируйте csproj и Ctrl + F «» – Chirac

ответ

0

быстрое и грязное решением этой проблемы является, после Билда, используйте GetAssemblyIdentity для извлечения информации о версии и затем переместите $(TargetFile) в соответствующий каталог.

Предполагается, что у вас нет зависимостей. В противном случае вам нужно будет изменить $(TargetPath), $(TargetName) и $(TargetExt) или пойти с «правильным» способом его выполнения - динамически изменять $(OutputPath).

<Target Name="AfterBuild" AfterTargets="Build"> 
    <GetAssemblyIdentity AssemblyFiles="$(TargetPath)"> 
     <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity"/> 
    </GetAssemblyIdentity> 
    <PropertyGroup> 
     <Version>@(AssemblyIdentity->'%(Version)')</Version> 
    </PropertyGroup> 
    <Copy SourceFiles="$(TargetPath)" DestinationFolder="$(OutDir)$(Version)" /> 
    </Target> 

Правильный путь должен был бы изменить $(OutDir)$(OutputPath) ака, но это будет включать в себя такие вещи, как изменение файла AssemblyVersion.cs (или сложнее, его копия вводится автоматически в сборки цепи).

Вы также можете проанализировать версию из файла AssemblyVersion.cs.

Смежные вопросы