Добавление информации о сборке к имени файла 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>`

0 ответов

Другие вопросы по тегам