【发布时间】:2020-09-01 16:52:14
【问题描述】:
在 C# 宿主项目中构建和包含 QDK 源代码的一般过程是什么?
在Develop with Q# and .NET 之后,我建立了一个 C# 宿主项目,它在 linux 上引用了一个 Q# 库。使用预构建的 QDK 并在 Q# 库 .csproj 文件的顶部包含 <Project Sdk="Microsoft.Quantum.Sdk/0.12.20072031"> 时,一切正常。
但是,我需要修改qsharp-runtime 中的代码,所以我想从源代码而不是SDK 编译。我可以成功构建源代码,但不确定如何使其对 C# 项目“可用”。按照related question 中的建议,我在 Q# .csproj 文件中包含了对所有具有 qsharp-runtime 的项目的项目引用和对 qsharp-compilers 的包引用:
<Project Sdk="Microsoft.NET.Sdk">
<!--Reference to Q# Runtime Projects -->
<ItemGroup>
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\CsharpGeneration\Microsoft.Quantum.CsharpGeneration.fsproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\QsharpCore\Microsoft.Quantum.QSharp.Core.csproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\RoslynWrapper\Microsoft.Quantum.RoslynWrapper.fsproj" />
<ProjectReference Include="..\..\..\qdk\qsharp-runtime\src\Simulation\Simulators\Microsoft.Quantum.Simulators.csproj" />
</ItemGroup>
<!--Reference to Q# compiler package -->
<ItemGroup>
<PackageReference Include="Microsoft.Quantum.Compiler" Version="0.12.20072031" />
<PackageReference Include="Microsoft.Quantum.Standard" Version="0.12.20072031" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
</Project>
但是,这会导致 C# 主机不再识别 Q# 命名空间。如果 Q# 直接移动到 Library.qs 中的 C# 项目中,并使用 <Compile Include="Library.qs"/> 引用,则无法再编译。似乎缺少一些我没有从包引用中得到的部分。如果我同时包含包引用和 QDK,则冲突会导致构建失败。
【问题讨论】:
标签: q#