生成和修改 Q# 库

Building and modifying Q# Libraries

如何在本地修改库 (https://github.com/microsoft/QuantumLibraries)?例如,创建对 Quantum Chemistry 库的引用仅使用预构建的 DLL。有没有办法引用本地的 Quantum Chem 库,对该代码进行编辑,然后查看这些更改?谢谢。

Quantum 开发工具包使用 .NET Core SDK 查找并link 各种 Q# 库,特别是通过 C# 项目文件 (*.csproj)。 在 C# 项目文件中,您可以使用 包引用 项目引用 声明对另一个库的依赖关系。 包引用(例如:<PackageReference Include="Microsoft.Quantum.Standard" Version="0.7.1905.3109" />)指示 .NET Core SDK 从 NuGet.org 下载具有给定名称和版本的包,然后 link 到项目中包含的所有 DLL。 相比之下,项目引用(例如:<ProjectReference Include="..\..\..\Standard\src\Standard.csproj" />)指示 .NET Core SDK 首先构建引用的项目,然后 link 到其 DLL。

要使用从 https://github.com/microsoft/QuantumLibraries 构建的库,我们通常建议使用包引用,因为跨不同存储库的项目引用可能难以管理 — 您需要项目文件的路径是可预测的,这在那种情况下可能很难做到。 这就是为什么我们对 QuantumLibraries 存储库采取策略,该存储库中的引用是项目引用,而对 Quantum 开发工具包其他部分的引用是包引用。 例如,化学库运行时使用 project reference to link to the version of the standard libraries in the same repo, but samples in https://github.com/microsoft/Quantum use package references:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <PlatformTarget>x64</PlatformTarget>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.1" />
        <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.1" />
        <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.1" />
        <PackageReference Include="Microsoft.Quantum.Standard" Version="0.7.1905.3109" />
        <PackageReference Include="Microsoft.Quantum.Chemistry" Version="0.7.1905.3109" />
        <PackageReference Include="Microsoft.Quantum.Development.Kit" Version="0.7.1905.3109" />
        <PackageReference Include="Microsoft.Quantum.Research" Version="0.7.1905.3109" />
    </ItemGroup>

    <ItemGroup>
        <Compile Update="Program.cs">
            <CopyToOutputDirectory>Never</CopyToOutputDirectory>
        </Compile>
    </ItemGroup>
</Project>

就是说,如果您要在本地测试您想要对量子开发工具包做出的贡献,link使用项目引用对 Q# 标准和化学库有时会有所帮助,直到包含您的贡献的新包已构建并发布到 NuGet.org。