быстрое и грязное решением этой проблемы является, после Билда, используйте 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.
Каков атрибут выходного пути, указанный в конфигурации отладки вашего файла csproj? – Chirac
Вы имеете в виду, что номер '1.0.3.4' доступен только в виде строки внутри файла .cs? – stijn
В вашем csproj вы должны найти атрибут выходного пути в своей конфигурации отладки. Какова его ценность? Выгрузите проект, отредактируйте csproj и Ctrl + F «» –
Chirac