Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit b02c66a

Browse files
authored
Consolidate native dlls in a single folder to avoid dupe references (fixes NETSDK1152 error) (#911)
1 parent 7f0ba26 commit b02c66a

File tree

4 files changed

+55
-42
lines changed

4 files changed

+55
-42
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,3 +354,9 @@ out/
354354

355355
# Ignore drops from building native simulators.
356356
xplat
357+
src/Simulation/Native/win10/Microsoft.Quantum.Simulator.Runtime.dll
358+
src/Simulation/Native/linux/libMicrosoft.Quantum.Simulator.Runtime.so
359+
src/Simulation/Native/osx/libMicrosoft.Quantum.Simulator.Runtime.dylib
360+
src/Simulation/Native/win10/Microsoft.Quantum.Experimental.Simulators.Runtime.dll
361+
src/Simulation/Native/linux/Microsoft.Quantum.Experimental.Simulators.Runtime.dll
362+
src/Simulation/Native/osx/Microsoft.Quantum.Experimental.Simulators.Runtime.dll

build/steps-init.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ steps:
99
versionSpec: '5.6.0'
1010

1111
- task: UseDotNet@2
12-
displayName: 'Use .NET Core SDK 3.1.300'
12+
displayName: 'Use .NET Core SDK 6.0.x'
1313
inputs:
1414
packageType: sdk
15-
version: '3.1.300'
15+
version: '6.0.x'
1616

1717
- script: |
1818
curl https://sh.rustup.rs -sSf | sh -s -- -y
Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,55 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project InitialTargets="CopyNativeDlls" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33

44
<PropertyGroup>
55
<DocumentationFile>bin\$(BuildConfiguration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
66
<EnlistmentRoot>$([MSBuild]::NormalizeDirectory($(MSBuildThisFileDirectory)..\..\..\))</EnlistmentRoot>
7-
<NativeBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native/build/drop))</NativeBuildPath>
7+
<NativeRootPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native))</NativeRootPath>
8+
<NativeBuildPath>$([MSBuild]::NormalizePath($(NativeRootPath)/build/drop))</NativeBuildPath>
89
<ExperimentalSimBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/qdk_sim_rs/drop))</ExperimentalSimBuildPath>
910
</PropertyGroup>
1011

11-
<!-- Copy Microsoft.Quantum.Simulator.Runtime.dll from src/Simulation/Native build to where we can see and use it. -->
12-
<PropertyGroup Condition="'$(QsimDll)' == ''">
13-
<QsimDllMac>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))</QsimDllMac>
14-
<QsimDllLinux>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))</QsimDllLinux>
15-
<QsimDllWindows>$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))</QsimDllWindows>
16-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(QsimDllMac)</QSimDll>
17-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(QsimDllLinux)</QSimDll>
18-
<QSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(QsimDllWindows)</QSimDll>
19-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('OSX'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../osx))</QSimDependencies>
20-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Linux'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../linux))</QSimDependencies>
21-
<QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Windows'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../win10))</QSimDependencies>
22-
</PropertyGroup>
23-
2412
<ItemGroup>
2513
<ProjectReference Include="$(EnlistmentRoot)src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj" />
2614
<ProjectReference Include="$(EnlistmentRoot)src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj" IncludeInSimulatorPackage="true" />
2715
</ItemGroup>
2816

17+
<!-- Copy Native dlls from their build output to where we can see and use them -->
18+
<Target Name="CopyNativeDlls">
19+
<ItemGroup>
20+
<!-- Native simulator: -->
21+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))" Dest="osx/libMicrosoft.Quantum.Simulator.Runtime.dylib" />
22+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))" Dest="linux/libMicrosoft.Quantum.Simulator.Runtime.so" />
23+
<NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))" Dest="win10/Microsoft.Quantum.Simulator.Runtime.dll" />
24+
25+
<!-- Native Experimental simulator simulator: -->
26+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))" Dest="osx/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
27+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))" Dest="linux/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
28+
<NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))" Dest="win10/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" />
29+
</ItemGroup>
30+
31+
<Copy
32+
SourceFiles="@(NativeDll)"
33+
DestinationFiles="@(NativeDll->'$([MSBuild]::NormalizePath($(NativeRootPath)/))%(Dest)')"
34+
ContinueOnError="WarnAndContinue"
35+
SkipUnchangedFiles="true" />
36+
</Target>
37+
2938
<ItemGroup>
30-
<None Include="$(QSimDll)" >
39+
<None Include="$(NativeRootPath)/win10/*" Condition="$([MSBuild]::IsOsPlatform('Windows'))">
3140
<Link>%(Filename)%(Extension)</Link>
3241
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3342
<Visible>false</Visible>
3443
</None>
35-
<None Include="$(QSimDependencies)/**/*" >
44+
<None Include="$(NativeRootPath)/osx/*" Condition="$([MSBuild]::IsOsPlatform('OSX'))">
3645
<Link>%(Filename)%(Extension)</Link>
3746
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3847
<Visible>false</Visible>
3948
</None>
40-
</ItemGroup>
41-
42-
<!-- Copy the experimental simulators from xplat/qdk_sim_rs build to where we can see and use it. -->
43-
<PropertyGroup Condition="'$(ExperimentalSimDll)' == ''">
44-
<ExperimentalSimDllMac>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))</ExperimentalSimDllMac>
45-
<ExperimentalSimDllLinux>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))</ExperimentalSimDllLinux>
46-
<ExperimentalSimDllWindows>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))</ExperimentalSimDllWindows>
47-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(ExperimentalSimDllMac)</ExperimentalSimDll>
48-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(ExperimentalSimDllLinux)</ExperimentalSimDll>
49-
<ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(ExperimentalSimDllWindows)</ExperimentalSimDll>
50-
</PropertyGroup>
51-
52-
<ItemGroup>
53-
<None Include="$(ExperimentalSimDll)" Condition="Exists('$(ExperimentalSimDll)')">
54-
<Link>Microsoft.Quantum.Experimental.Simulators.Runtime.dll</Link>
49+
<None Include="$(NativeRootPath)/linux/*" Condition="$([MSBuild]::IsOsPlatform('Linux'))">
50+
<Link>%(Filename)%(Extension)</Link>
5551
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
5652
<Visible>false</Visible>
5753
</None>
5854
</ItemGroup>
59-
60-
<Target Name="ValidateExperimentalSimDll" BeforeTargets="GetCopyToOutputDirectoryItems">
61-
<Warning
62-
Text="The experimental simulator DLL was not found at '$(ExperimentalSimDll)'; not including in simulators package."
63-
Condition="!Exists('$(ExperimentalSimDll)')"
64-
/>
65-
</Target>
66-
6755
</Project>

src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,23 @@
2828
<PackageReference Include="NumSharp" Version="0.20.5" />
2929
</ItemGroup>
3030

31+
<ItemGroup>
32+
<None Include="..\Native\win10\**\*">
33+
<Link>runtimes\win-x64\native\%(RecursiveDir)%(FileName)%(Extension)</Link>
34+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
35+
<Visible>false</Visible>
36+
</None>
37+
<None Include="..\Native\osx\**\*">
38+
<Link>runtimes\osx-x64\native\%(RecursiveDir)%(FileName)%(Extension)</Link>
39+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
40+
<Visible>false</Visible>
41+
</None>
42+
<None Include="..\Native\linux\**\*">
43+
<Link>runtimes\linux-x64\native\%(RecursiveDir)%(FileName)%(Extension)</Link>
44+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
45+
<Visible>false</Visible>
46+
</None>
47+
48+
</ItemGroup>
49+
3150
</Project>

0 commit comments

Comments
 (0)