Сборка и модификация библиотек Q # - PullRequest
1 голос
/ 03 июля 2019

Как библиотеки (https://github.com/microsoft/QuantumLibraries) могут быть изменены локально? Например, при создании ссылок на библиотеку Quantum Chemistry используется только встроенная библиотека DLL. Есть ли способ ссылки на локальную библиотеку Quantum Chem, внесите в нее изменениякод, и увидеть эти изменения отражены? Спасибо.

1 Ответ

0 голосов
/ 03 июля 2019

Quantum Development Kit использует .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 Development Kit - это ссылки на пакеты. Например, среда выполнения библиотеки химии использует ссылку на проект для ссылки на версию стандартных библиотек в том же репо, но образцы в https://github.com/microsoft/Quantum используют ссылки на пакеты :

<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 Development Kit, ссылки на стандарт Q # и библиотеки химии с использованием ссылок на проекты могут иногда оказаться полезными, пока новый пакет, включающий ваш вклад, не будет построен и опубликован на NuGet.org.

...