【发布时间】:2019-07-03 18:45:45
【问题描述】:
如何在本地修改库 (https://github.com/microsoft/QuantumLibraries)?例如,创建对 Quantum Chemistry 库的引用仅使用预构建的 DLL。有没有办法引用本地 Quantum Chem 库,对代码进行编辑,并查看反映的这些更改?谢谢。
【问题讨论】:
标签: q#
如何在本地修改库 (https://github.com/microsoft/QuantumLibraries)?例如,创建对 Quantum Chemistry 库的引用仅使用预构建的 DLL。有没有办法引用本地 Quantum Chem 库,对代码进行编辑,并查看反映的这些更改?谢谢。
【问题讨论】:
标签: q#
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。
【讨论】: