Добавление информации о сборке к имени файла Zip при развертывании
Функция публикации веб-развертывания в Visual Studio позволяет настроить расположение пакета. Используя это, вы также можете указать имя вашего файла. Как добавить AssemblyInfo к этому имени файла?
Мне удалось добавить версию сборки в zip-файл как часть сборки. Это было сделано с помощью пользовательского файла проекта, который использует MSBuild.Extension.Pack. Ниже приведен XML-файл из файла проекта. Можно ли использовать этот же метод в профиле публикации (.pubxml)? Таким образом, пользовательский почтовый индекс создается только при развертывании проекта.
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Run">
<PropertyGroup>
<Configuration>Release</Configuration>
<ProjectName>MyProject</ProjectName>
<TemporaryFolder>temp</TemporaryFolder>
</PropertyGroup>
<Target Name="Run">
<CallTarget Targets="Build" />
<CallTarget Targets="Pack" />
</Target>
<Target Name="Build">
<Message Text="Build $(Configuration)" />
<MSBuild Projects="$(ProjectName)/$(ProjectName).csproj" Properties="Configuration=$(Configuration)" ContinueOnError="False"/>
</Target>
<UsingTask AssemblyFile="packages/MSBuild.Extension.Pack.1.9.1/tools/net40/MSBuild.ExtensionPack.dll" TaskName="Assembly"/>
<UsingTask AssemblyFile="packages/MSBuild.Extension.Pack.1.9.1/tools/net40/MSBuild.ExtensionPack.dll" TaskName="Zip"/>
<Target Name="Pack">
<PropertyGroup>
<BinaryFolder>$(ProjectName)/bin</BinaryFolder>
<MainExecutable>$(BinaryFolder)/$(ProjectName).dll</MainExecutable>
</PropertyGroup>
<Assembly TaskAction="GetInfo" NetAssembly="$(MainExecutable)">
<Output TaskParameter="OutputItems" ItemName="Info"/>
</Assembly>
<Message Text="Identity: %(Info.Identity)" />
<Message Text="FullName: %(Info.FullName)" />
<Message Text="FileVersion: %(Info.FileVersion)" />
<Message Text="AssemblyVersion: %(Info.AssemblyVersion)" />
<PropertyGroup>
<PackageFolder>$(TemporaryFolder)\$(ProjectName)_$(Configuration)_%(Info.AssemblyVersion)</PackageFolder>
<ZipFileName>$(ProjectName)_$(Configuration)_%(Info.AssemblyVersion).zip</ZipFileName>
</PropertyGroup>
<MSBuild Targets="Package" Projects="$(ProjectName)/$(ProjectName).csproj" ContinueOnError="False"
Properties="PublishProfile=$(Configuration);DesktopBuildPackageLocation=..\$(PackageFolder)\$(ZipFileName)" />
<CreateItem Include="$(PackageFolder)\*.*" >
<Output ItemName="ZipFiles" TaskParameter="Include"/>
</CreateItem>
<ConvertToAbsolutePath Paths="$(TemporaryFolder)">
<Output TaskParameter="AbsolutePaths" PropertyName="TemporaryFolderAbsolute"/>
</ConvertToAbsolutePath>
<Zip TaskAction="Create" CompressFiles="@(ZipFiles)" RemoveRoot="$(TemporaryFolderAbsolute)" ZipFileName="C:\$(ZipFileName)" />
<RemoveDir Directories="$(TemporaryFolder)" ContinueOnError="True"/>
</Target>
</Project>`