зеркало из https://github.com/mono/corefx.git
60 строки
3.5 KiB
XML
60 строки
3.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Target Name="AddReferenceFromRuntimeForTests"
|
|
AfterTargets="ResolveAssemblyReferences"
|
|
Condition="'$(IsTestProject)'=='true' AND '@(ReferenceFromRuntime)' != ''">
|
|
<ItemGroup>
|
|
<!-- tests can use anything from the RuntimePath -->
|
|
<ReferencePath Include="@(ReferenceFromRuntime->'$(RuntimePath)%(Identity).dll')" />
|
|
<ReferenceCopyLocalPaths Condition="'%(ReferenceFromRuntime.Private)' == 'true'" Include="@(ReferenceFromRuntime->'$(RuntimePath)%(Identity).dll')" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="AddRuntimeProjectReference"
|
|
BeforeTargets="AddProjectReferencesDynamically"
|
|
Condition="'$(IsTestProject)'!='true' AND '@(ReferenceFromRuntime)' != ''">
|
|
<Error Condition="('$(IsReferenceAssembly)' != 'true' OR '$(AllowReferenceFromRuntime)' == 'true') AND '$(RuntimeProjectFile)' == ''" Text="RuntimeProjectFile must be specified when using ReferenceFromRuntime from source projects." />
|
|
<Error Condition="'$(IsReferenceAssembly)' == 'true' AND '$(AllowReferenceFromRuntime)' != 'true'" Text="ReferenceFromRuntime may not be used from reference assemblies." />
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="$(RuntimeProjectFile)">
|
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
<OutputItemType>_referencePathFromRuntime</OutputItemType>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="FilterReferenceFromRuntime"
|
|
AfterTargets="ResolveProjectReferences"
|
|
Condition="'$(IsTestProject)'!='true' AND '@(ReferenceFromRuntime)' != ''">
|
|
<ItemGroup>
|
|
<!-- transform to filename in order to intersect -->
|
|
<_referencePathFromRuntimeByFileName Include="@(_referencePathFromRuntime->'%(FileName)')" Condition="'%(_referencePathFromRuntime.Extension)' == '.dll'" >
|
|
<ReferencePath>%(Identity)</ReferencePath>
|
|
</_referencePathFromRuntimeByFileName>
|
|
|
|
<!-- intersect with ReferenceFromRuntime -->
|
|
<_filteredReferencePathFromRuntimeByFileName Include="@(_referencePathFromRuntimeByFileName)"
|
|
Condition="'@(_referencePathFromRuntimeByFileName)' == '@(ReferenceFromRuntime)' AND '%(Identity)' != ''" />
|
|
|
|
<_remainingReferenceFromRuntime Include="@(ReferenceFromRuntime)" Exclude="@(_filteredReferencePathFromRuntimeByFileName)" />
|
|
|
|
<!-- Fallback and check for native images for the references as well -->
|
|
<_remainingReferenceFromRuntimeWithNI Include="@(_remainingReferenceFromRuntime->'%(Identity).ni')">
|
|
<OriginalReferenceFromRuntime>%(Identity)</OriginalReferenceFromRuntime>
|
|
</_remainingReferenceFromRuntimeWithNI>
|
|
|
|
<_filteredReferencePathFromRuntimeByFileName Include="@(_referencePathFromRuntimeByFileName)"
|
|
Condition="'@(_referencePathFromRuntimeByFileName)' == '@(_remainingReferenceFromRuntimeWithNI)' AND '%(Identity)' != ''" />
|
|
|
|
<_missingReferenceFromRuntime Include="@(_remainingReferenceFromRuntimeWithNI)" Exclude="@(_filteredReferencePathFromRuntimeByFileName)" />
|
|
|
|
<!-- transform back to path -->
|
|
<ReferencePath Include="@(_filteredReferencePathFromRuntimeByFileName->'%(ReferencePath)')" />
|
|
</ItemGroup>
|
|
|
|
<Error Condition="'@(_missingReferenceFromRuntime)' != ''"
|
|
Text="Could not resolve ReferenceFromRuntime item(s) '%(_missingReferenceFromRuntime.OriginalReferenceFromRuntime)' from '$(RuntimeProjectFile)'." />
|
|
</Target>
|
|
</Project>
|