【问题标题】:Building and modifying Q# Libraries构建和修改 Q# 库
【发布时间】:2019-07-03 18:45:45
【问题描述】:

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

【问题讨论】:

    标签: q#


    【解决方案1】:

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

    要使用从https://github.com/microsoft/QuantumLibraries 构建的库,我们通常建议使用包引用,因为跨不同存储库的项目引用可能难以管理 - 您需要项目文件的路径是可预测的,这可能很难在这种情况下做。 这就是为什么我们采用 QuantumLibraries 存储库的策略,即存储库中的引用是项目引用,而对 Quantum 开发工具包的其他部分的引用是包引用。 例如,化学库运行时使用 project reference 链接到同一 repo 中的标准库版本,但示例在 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>
    

    也就是说,如果您在本地测试您想为 Quantum 开发工具包做出的贡献,那么使用项目参考链接到 Q# 标准和化学库有时会很有帮助,直到包含您的贡献的新包发布构建并发布到 NuGet.org。

    【讨论】:

    • 太棒了!我尝试使用 HydrogenSimulation 示例进行测试(将 .NET 项目移动到不同的目录 + 使用的项目引用代替),但我仍然收到如下错误:“当前上下文中不存在名称 'QSharpFormat'”我已将 ProjectReference 用于 QuantumLibraries Standard、Chemistry Runtime 和 Chemistry DataModel
    • @C.Kang:很抱歉,我应该提供更多细节。 Microsoft.Quantum.Chemistry 包由两个项目组成,Microsoft.Quantum.Chemistry.DataModel.csproj 和 Microsoft.Quantum.Chemistry.Runtime.csproj。您需要将包引用替换为两个项目引用,以便以这种方式测试您的更改。再次道歉!
    • 即使有引用,也会出现两个错误(都在谈论缺少上下文中的变量)。 'QSharpFormat' 和 'Paulis' 在错误消息中。
    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多