Eu tenho um projeto C# multi-alvo construído para net framework 4.7.2 e para net 7.0. O elemento TargetFrameworks do projeto é definido como:
<TargetFrameworks>net472;net7.0-windows</TargetFrameworks>
Agora eu preciso incluir tanto o net framework quanto o net 7 build outputs no meu instalador (diferentes pastas).
Eu tento seguir as etapas descritas nesta discussão WiX: https://github.com/wixtoolset/issues/issues/7241
Inicialmente eu faço da maneira "antiga" descrita lá: para wixproj eu insiro 2 referências de projeto com diferentes BindName explicitamente especificados:
<ProjectReference Include="..\MyProject\MyProject.csproj" SetTargetFramework="TargetFramework=net472" BindName="MyProject.net472"/>
<ProjectReference Include="..\MyProject\MyProject.csproj" SetTargetFramework="TargetFramework=net7.0-windows" BindName="MyProject.net7.0-windows"/>
E então no arquivo wxs eu incluo arquivos em componentes:
...
<File Id="MyFile" Name="MyProject.dll" Source="!(bindpath.MyProject.net472)\MyProject.dll" />
...
<File Id="MyFile" Name="MyProject.dll" Source="!(bindpath.MyProject.net7.0-windows)\MyProject.dll" />
Isso parece funcionar. Os arquivos são encontrados e compactados. Mas requer 2 entradas ProjectReference no arquivo wixproj. Da maneira descrita na discussão do WiX, deve ser possível adicionar apenas um:
<ProjectReference Include="..\MyProject\MyProject.csproj" TargetFrameworks="net472,net7.0-windows"/>
que deve gerar automaticamente BindName.
No entanto, depois que eu faço isso, o arquivo com o bindpath MyProject.net472 é encontrado, mas aquele com o bindpath MyProject.net7.0-windows não é. Eu também tentei sem -windows no final, o mesmo resultado. O que está errado?
O
-
não é um caractere identificador válido em algum lugar no pipeline de construção (MSBuild, eu acho, ou talvez as variáveis do pré-processador), então ele deve ser alterado para um_
quando usado no código .wxs.