Как ссылаться на ссылку на проект в задаче HeatProject?

#wix #windows-installer #msbuild-task #wix3.7

#wix #windows-установщик #msbuild-задача #wix3.7

Вопрос:

У меня есть эта разметка. Каким должно быть значение атрибута Project=»@(_Project)» Задачи HeatProject? В документе Wix указан требуемый параметр группы элементов, но как мне связать нижеприведенную группу элементов??

   <ItemGroup>
    <ProjectReference Include="..MyProjectAPresentsoft.MyProjectA.csproj">
      <Name>MyProjectA</Name>
      <Project>{59FB083D-C11C-4690-A128-28F5269125D4}</Project>
      <Private>True</Private>
    </ProjectReference>
  </ItemGroup>

  <Target Name="BeforeBuild">
    <HeatProject
   NoLogo="$(HarvestProjectsNoLogo)"
   SuppressAllWarnings="$(HarvestProjectsSuppressAllWarnings)"
   SuppressSpecificWarnings="$(HarvestProjectsSuppressSpecificWarnings)"
   ToolPath="$(WixToolPath)"
   TreatWarningsAsErrors="$(HarvestProjectsTreatWarningsAsErrors)"
   TreatSpecificWarningsAsErrors="$(HarvestProjectsTreatSpecificWarningsAsErrors)"
   VerboseOutput="$(HarvestProjectsVerboseOutput)"
   AutogenerateGuids="$(HarvestProjectsAutogenerateGuids)"
   GenerateGuidsNow="$(HarvestProjectsGenerateGuidsNow)"
   OutputFile="$(IntermediateOutputPath)_%(_Project.Filename).wxs"
   SuppressFragments="$(HarvestProjectsSuppressFragments)"
   SuppressUniqueIds="$(HarvestProjectsSuppressUniqueIds)"
   Transforms="%(_Project.Transforms)"
   Project="@(_Project)"
   ProjectOutputGroups="Content;Binaries;Satellites" />
  </Target>
  

Я очень новичок в установщике и wix.

Ответ №1:

Ваш вопрос касается MSBuild. Задача ссылается на группу элементов _Project, но у вас есть группа элементов ProjectReference. Чтобы исправить это, просто замените _Project на ProjectReference везде.

Однако из-за конструкции целей WiX вам не нужно напрямую вызывать задачу HeatProject. Они делают это как часть основной сборки, если вы включаете ее как в целом, так и для каждой конкретной ссылки на проект.

 <PropertyGroup>
  <EnableProjectHarvesting>True</EnableProjectHarvesting>
</PropertyGroup>


<ItemGroup>
  <ProjectReference Include="..MyProjectAPresentsoft.MyProjectA.csproj">
    <Name>MyProjectA</Name>
    <Project>{59FB083D-C11C-4690-A128-28F5269125D4}</Project>
    <Private>True</Private>
    <DoNotHarvest>
    </DoNotHarvest>
    <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
    <RefTargetDir>INSTALLFOLDER</RefTargetDir>
  </ProjectReference>   
</ItemGroup>
  

Выходные данные генерируются в папке «obj», если вы действительно хотите это увидеть. Но все, что вам нужно сделать, это добавить что-то вроде следующего, где это необходимо (например, внутри функции).

   <ComponentGroupRef Id="MyProjectA.Binaries" />