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]