@joebigelow / wix-1 / commits / 28b700be

Customize project references to not attempt assembly reference resolution

Fixes 7132

Rob Mensching committed Jan 11, 2023 at 09:18 UTC 28b700be89603860f2127dc21170e8f413385602
2 files changed +29 -31
src/wix/WixToolset.Sdk/tools/wix.props
-17
@@ -46,27 +46,10 @@
46 <TargetFrameworkMoniker>native,Version=v0.0</TargetFrameworkMoniker>
47 </PropertyGroup>
48
49 - <PropertyGroup>
50 - <NoWarn>$(NoWarn);NU1702</NoWarn>
51 - </PropertyGroup>
52 -
53 - <PropertyGroup>
54 - <AssetTargetFallback>$(AssetTargetFallback);net7.0-windows7.0;net7.0-windows;net7.0;net6.0-windows7.0;net6.0-windows;net6.0;net5.0-windows7.0;net5.0-windows;net5.0;netcoreapp3.1;netcoreapp3.0;netcoreapp2.0;net462;net47;net471;net472;net48;native</AssetTargetFallback>
55 - </PropertyGroup>
56 -
49 <PropertyGroup>
50 <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
51 </PropertyGroup>
52
61 - <ItemDefinitionGroup>
62 - <ProjectReference>
63 - <Private>false</Private>
64 - </ProjectReference>
65 - <None>
66 - <CopyToOutputDirectory>Never</CopyToOutputDirectory>
67 - </None>
68 - </ItemDefinitionGroup>
69 -
53 <ImportGroup>
54 <Import Project="$(MSBuildUserExtensionsPath)\WixToolset\$(WixToolsetMajorMinorVersion)\Imports\WixToolset.props\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfterWixToolsetProps)' != 'false' and Exists('$(MSBuildUserExtensionsPath)\WixToolset\$(WixToolsetMajorMinorVersion)\Imports\WixToolset.props\ImportAfter')" />
55 <Import Project="$(MSBuildExtensionsPath)\WixToolset\$(WixToolsetMajorMinorVersion)\Imports\WixToolset.props\ImportAfter\*" Condition="'$(ImportByWildcardAfterWixToolsetProps)' != 'false' and Exists('$(MSBuildExtensionsPath)\WixToolset\$(WixToolsetMajorMinorVersion)\Imports\WixToolset.props\ImportAfter')" />
src/wix/WixToolset.Sdk/tools/wix.targets
+29 -14
@@ -109,6 +109,21 @@
109 <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
110 </PropertyGroup>
111
112 + <ItemDefinitionGroup>
113 + <!-- Customize project references to not attempt assembly reference resolution. -->
114 + <ProjectReference>
115 + <Private>false</Private>
116 + <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
117 + <SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
118 + <OutputItemType>_WixResolvedProjectReference</OutputItemType>
119 + </ProjectReference>
120 +
121 + <!-- By default do not copy none items to output. -->
122 + <None>
123 + <CopyToOutputDirectory>Never</CopyToOutputDirectory>
124 + </None>
125 + </ItemDefinitionGroup>
126 +
127 <PropertyGroup>
128 <!--
129 Only Package, Module and Bundle output types create .wixpdbs, so reset the flag indicating symbols will be produced outside of those output types.
@@ -268,7 +283,7 @@
283 @(_MSBuildProjectReferenceExistent) - References to projects that exist.
284
285 [OUT]
271 - @(_ResolvedProjectReferencePaths) - Target paths from .vcxproj outputs added.
286 + @(_WixResolvedProjectReference) - Target paths from .vcxproj outputs added.
287 ================================================================================================
288 -->
289 <Target
@@ -281,7 +296,7 @@
296 Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration);%(_MSBuildProjectReferenceExistent.SetPlatform)"
297 Condition=" '@(ProjectReferenceWithConfiguration)' != '' and '%(_MSBuildProjectReferenceExistent.Extension)' == '.vcxproj' ">
298
284 - <Output TaskParameter="TargetOutputs" ItemName="_ResolvedProjectReferencePaths" />
299 + <Output TaskParameter="TargetOutputs" ItemName="_WixResolvedProjectReference" />
300 </MSBuild>
301 </Target>
302
@@ -289,23 +304,23 @@
304 ================================================================================================
305 _ConvertResolvedProjectReferencesIntoWixConstructs
306
292 - Converts _ResolvedProjectReferencePaths (which are the outputs of the ProjectReferences that
307 + Converts _WixResolvedProjectReference (which are the outputs of the ProjectReferences that
308 normally would be passed through ResolveAssemblyReferences then be passed to the C# compiler
309 as references) into the appropriate WiX constructs. For example, references to .wixlibs are
295 - converted into WixLibrary items. In the end, _ResolvedProjectReferencePaths is emptied to
310 + converted into WixLibrary items. In the end, _WixResolvedProjectReference is emptied to
311 prevent ResolveAssemblyReferences and other non-sensical targets (from a WiX point of view)
312 from doing work.
313
314 [IN]
300 - @(_ResolvedProjectReferencePaths) - Resolved project references.
315 + @(_WixResolvedProjectReference) - Resolved project references.
316 $(VSProjectConfigurations) - map of project names to configurations, provided by VS when building in the IDE.
317
318 [OUT]
319 $(ProjectReferenceDefineConstants) - Define constants from project references.
320 @(BindPath) - Bind paths from project references.
321 @(WixLibrary) - Target paths from .vcxproj outputs added.
307 - @(_WixReferencedProjectOutputs) - Copy of _ResolvedProjectReferencePaths for use in up-to-date checks.
308 - @(_ResolvedProjectReferencePaths) - All resolved reference paths emptied.
322 + @(_WixReferencedProjectOutputs) - Copy of _WixResolvedProjectReference for use in up-to-date checks.
323 + @(_WixResolvedProjectReference) - All resolved reference paths emptied.
324 ================================================================================================
325 -->
326 <PropertyGroup>
@@ -314,21 +329,21 @@
329 <Target
330 Name="_ConvertResolvedProjectReferencesIntoWixConstructs"
331 DependsOnTargets="$(_CreateProjectDefineConstantsDependsOn)"
317 - Condition=" '@(_ResolvedProjectReferencePaths)' != '' ">
332 + Condition=" '@(_WixResolvedProjectReference)' != '' ">
333
334 <!-- Save all the project reference outputs before we start removing -->
335 <ItemGroup>
321 - <_WixReferencedProjectOutputs Include="@(_ResolvedProjectReferencePaths)" />
336 + <_WixReferencedProjectOutputs Include="@(_WixResolvedProjectReference)" />
337 </ItemGroup>
338
339 <ItemGroup>
325 - <WixLibrary Include="@(_ResolvedProjectReferencePaths)" Condition=" '%(Extension)' == '.wixlib' " />
326 - <_ResolvedProjectReferencePaths Remove="@(WixLibrary)" />
340 + <WixLibrary Include="@(_WixResolvedProjectReference)" Condition=" '%(Extension)' == '.wixlib' " />
341 + <_WixResolvedProjectReference Remove="@(WixLibrary)" />
342 </ItemGroup>
343
344 <!-- Convert resolved project references into compiler defines and named and unamed bind paths -->
345 <CreateProjectReferenceDefineConstantsAndBindPaths
331 - ResolvedProjectReferences="@(_ResolvedProjectReferencePaths)"
346 + ResolvedProjectReferences="@(_WixResolvedProjectReference)"
347 ProjectConfigurations="$(VSProjectConfigurations)">
348 <Output TaskParameter="BindPaths" ItemName="BindPath" />
349 <Output TaskParameter="DefineConstants" PropertyName="ProjectReferenceDefineConstants" />
@@ -339,7 +354,7 @@
354 behavior from kicking in
355 -->
356 <ItemGroup>
342 - <_ResolvedProjectReferencePaths Remove="@(_ResolvedProjectReferencePaths)" />
357 + <_WixResolvedProjectReference Remove="@(_WixResolvedProjectReference)" />
358 </ItemGroup>
359 </Target>
360
@@ -358,7 +373,7 @@
373
374 [IN]
375 @(WixLibrary) - the list of .wixlib files.
361 - @(_ResolvedProjectReferencePaths) - resolved project references.
376 + @(_WixResolvedProjectReference) - resolved project references.
377 $(WixLibrarySearchPaths) - optional search paths used to find .wixlibs.
378
379 [OUT]