Skip to content

Commit

Permalink
Port native project ref changes to 2.1 (dotnet#6071)
Browse files Browse the repository at this point in the history
  • Loading branch information
jkotalik authored Dec 21, 2018
1 parent 3641761 commit 167695f
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 10 deletions.
1 change: 1 addition & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\CSharp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
<Import Project="eng\targets\Cpp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.vcxproj'" />
<Import Project="eng\targets\ResolveIisReferences.targets" Condition=" '$(MSBuildProjectExtension)' != '.vcxproj' " />

</Project>
83 changes: 83 additions & 0 deletions eng/targets/ResolveIisReferences.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<!--
The targets in this file resolve References to ANCM into ProjectReferences,
with the right MSBuild incantations to get output copied to the right place.
-->
<Project>
<Choose>
<!-- IIS native projects only build on Windows with MSBuild.exe -->
<When Condition="'$(OS)' == 'Windows_NT' AND '$(MSBuildRuntimeType)' != 'Core' ">
<ItemGroup Condition=" '@(Reference->AnyHaveMetadataValue('Identity', 'AspNetCoreModuleV1'))' == 'true' ">
<Reference Remove="AspNetCoreModuleV1" />
<NativeProjectReference Include="$(MSBuildThisFileDirectory)src\AspNetCoreModuleV1\AspNetCore\AspNetCore.vcxproj" />
</ItemGroup>

<ItemGroup Condition="@(NativeProjectReference->Count()) != 0">
<!-- TODO: investigate building just one arch at a time. -->
<ProjectReference Include="@(NativeProjectReference)">
<!-- Set the arch-->
<SetPlatform>Platform=x64</SetPlatform>
<!-- The base path for the output. -->
<LinkBase>x64\%(HandlerPath)\</LinkBase>
<!-- This reference assembly doesn't need -->
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<!-- NativeContent is a custom type of item group which is assigned a target path after project references are resolved. -->
<OutputItemType>NativeContent</OutputItemType>
<!-- Set the copy policy. -->
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<!-- This instructs the ProjectRef protocol to collect symbols as well as built output -->
<Targets>Build;BuiltProjectOutputGroup;DebugSymbolsProjectOutputGroup</Targets>
<!-- Optimization. Native projects don't have a .NET TargetFramework -->
<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
<UndefineProperties>TargetFramework</UndefineProperties>
<!-- Don't put this reference into generated .nuspec -->
<PrivateAssets>All</PrivateAssets>
<!-- Publish assets from this reference -->
<Publish>true</Publish>
</ProjectReference>

<ProjectReference Include="@(NativeProjectReference)">
<!-- Set the arch-->
<SetPlatform>Platform=x86</SetPlatform>
<!-- The base path for the output. -->
<LinkBase>x86\%(HandlerPath)\</LinkBase>
<!-- This reference assembly doesn't need -->
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<!-- NativeContent is a custom type of item group which is assigned a target path after project references are resolved. -->
<OutputItemType>NativeContent</OutputItemType>
<!-- Set the copy policy. -->
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<!-- This instructs the ProjectRef protocol to collect symbols as well as built output -->
<Targets>Build;BuiltProjectOutputGroup;DebugSymbolsProjectOutputGroup</Targets>
<!-- Optimization. Native projects don't have a .NET TargetFramework -->
<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
<UndefineProperties>TargetFramework</UndefineProperties>
<!-- Don't put this reference into generated .nuspec -->
<PrivateAssets>All</PrivateAssets>
<!-- Publish assets from this reference -->
<Publish>true</Publish>
</ProjectReference>

<NativeProjectReference Remove="@(NativeProjectReference)" />
</ItemGroup>
</When>
</Choose>

<Target Name="_GetNativeContentCopyToOutputDirectoryItems"
BeforeTargets="GetCopyToOutputDirectoryItems"
DependsOnTargets="ResolveProjectReferences">

<ItemGroup>
<!-- Prepend LinkBase to output path. -->
<NativeContent>
<Link>%(LinkBase)%(FileName)%(Extension)</Link>
<!-- Don't put this content in a nuget package. -->
<Pack>false</Pack>
</NativeContent>
</ItemGroup>

<!-- Add the item to the ContentWithTargetPath group, which is then used by GetCopyToOutputDirectoryItems to copy to the correct output location. -->
<AssignTargetPath Files="@(NativeContent)" RootFolder="$(MSBuildProjectDirectory)">
<Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath" />
</AssignTargetPath>
</Target>
</Project>
6 changes: 2 additions & 4 deletions src/Servers/IIS/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,8 @@ project.lock.json
*.tlog
*.CppClean.log
*msbuild.log
src/*/*/Debug/
src/*/*/x64/Debug/
src/*/*/Release/
src/*/*/x64/Release/
Debug/
Release/
x64/
*vcxproj.filters
*.aps
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
<Content Include="*.config;*.conf" CopyToPublishDirectory="PreserveNewest" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

<ItemGroup Condition="'$(OS)' == 'Windows_NT'">
<!-- Temporary work around until ANCM ProjectReference changes are in 2.1 -->
<PackageReference Include="Microsoft.AspNetCore.AspNetCoreModuleV1" Version="$(MicrosoftAspNetCoreAspNetCoreModuleV1PackageVersion)" />
</ItemGroup>

<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Server.IntegrationTesting" />
<Reference Include="Microsoft.Extensions.Logging" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<Import Project="$(RepositoryRoot)src\Servers\IIS\build\testsite.props" />

<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;netcoreapp2.0;net461</TargetFrameworks>
<RuntimeIdentifiers>win7-x86;win7-x64;linux-x64;osx-x64</RuntimeIdentifiers>
</PropertyGroup>

<ItemGroup Condition="'$(OS)' == 'Windows_NT'">
<PackageReference Include="Microsoft.AspNetCore.AspNetCoreModuleV1" Version="$(MicrosoftAspNetCoreAspNetCoreModuleV1PackageVersion)" />
<NativeProjectReference Include="$(MSBuildThisFileDirectory)src\AspNetCoreModuleV1\AspNetCore\AspNetCore.vcxproj" />
</ItemGroup>

<ItemGroup>
Expand Down

0 comments on commit 167695f

Please sign in to comment.