量子程序名称 'BellTest' 在当前上下文中不存在
Quantum Program The name 'BellTest' does not exist in the current context
这是我的第一个 Q# 程序,我正在关注这个入门 link。https://docs.microsoft.com/en-us/quantum/quantum-writeaquantumprogram?view=qsharp-preview
错误是
The name 'BellTest' does not exist in the current context
but its defined in the Bell.cs
我按照步骤进行构建时出现错误。我不确定如何将操作从 .qs file
导入到驱动程序 c# file
,因为这个错误看起来像是找不到该操作。
非常感谢任何帮助
这是代码
Driver.cs
using Microsoft.Quantum.Simulation.Core;
using Microsoft.Quantum.Simulation.Simulators;
namespace Quantum.Bell
{
class Driver
{
static void Main(string[] args)
{
using (var sim = new QuantumSimulator())
{
// Try initial values
Result[] initials = new Result[] { Result.Zero, Result.One };
foreach (Result initial in initials)
{
var res = BellTest.Run(sim, 1000, initial).Result;
var (numZeros, numOnes) = res;
System.Console.WriteLine(
$"Init:{initial,-4} 0s={numZeros,-4} 1s={numOnes,-4}");
}
}
System.Console.WriteLine("Press any key to continue...");
System.Console.ReadKey();
}
}
}
Bell.qs
namespace Quantum.Bell
{
open Microsoft.Quantum.Primitive;
open Microsoft.Quantum.Canon;
operation Set (desired:Result,q1:Qubit) : ()
{
body
{
let current = M(q1);
if (desired != current)
{
X(q1);
}
}
}
operation BellTest (count : Int, initial: Result) : (Int,Int)
{
body
{
mutable numOnes = 0;
using (qubits = Qubit[1])
{
for (test in 1..count)
{
Set (initial, qubits[0]);
let res = M (qubits[0]);
// Count the number of ones we saw:
if (res == One)
{
set numOnes = numOnes + 1;
}
}
Set(Zero, qubits[0]);
}
// Return number of times we saw a |0> and number of times we saw a |1>
return (count-numOnes, numOnes);
}
}
}
我也遇到了同样的错误,但我可以通过按 F5
键来完成。
可能 Visual Studio 编辑器还没有完全支持 .qs
文件。
.cs
文件和 .qs
文件之间的命名空间共享似乎无法正常工作。
我能够在我的开发环境中使用您的代码执行。
--
IDE:Visual Studio 社区 2017(版本 15.5.2)
开发工具包:Microsoft Quantum 开发工具包(0 和 1)
我在microsoft.quantum.development.kit/0.3.1811.203-预览版中遇到了同样的问题。
VSC 无法识别 BellTest 操作Pic of VSCode
我做的是,
- 保存所有但保持 VSCode 打开
- 转到目录并通过 /bin/rm -rf bin obj
删除 bin/ obj/ 中的所有内容
- 网络运行
- 你回去查看一下VSCode,现在VSC识别的BellTest
这是我的第一个 Q# 程序,我正在关注这个入门 link。https://docs.microsoft.com/en-us/quantum/quantum-writeaquantumprogram?view=qsharp-preview
错误是
The name 'BellTest' does not exist in the current context but its defined in the Bell.cs
我按照步骤进行构建时出现错误。我不确定如何将操作从 .qs file
导入到驱动程序 c# file
,因为这个错误看起来像是找不到该操作。
非常感谢任何帮助
这是代码
Driver.cs
using Microsoft.Quantum.Simulation.Core;
using Microsoft.Quantum.Simulation.Simulators;
namespace Quantum.Bell
{
class Driver
{
static void Main(string[] args)
{
using (var sim = new QuantumSimulator())
{
// Try initial values
Result[] initials = new Result[] { Result.Zero, Result.One };
foreach (Result initial in initials)
{
var res = BellTest.Run(sim, 1000, initial).Result;
var (numZeros, numOnes) = res;
System.Console.WriteLine(
$"Init:{initial,-4} 0s={numZeros,-4} 1s={numOnes,-4}");
}
}
System.Console.WriteLine("Press any key to continue...");
System.Console.ReadKey();
}
}
}
Bell.qs
namespace Quantum.Bell
{
open Microsoft.Quantum.Primitive;
open Microsoft.Quantum.Canon;
operation Set (desired:Result,q1:Qubit) : ()
{
body
{
let current = M(q1);
if (desired != current)
{
X(q1);
}
}
}
operation BellTest (count : Int, initial: Result) : (Int,Int)
{
body
{
mutable numOnes = 0;
using (qubits = Qubit[1])
{
for (test in 1..count)
{
Set (initial, qubits[0]);
let res = M (qubits[0]);
// Count the number of ones we saw:
if (res == One)
{
set numOnes = numOnes + 1;
}
}
Set(Zero, qubits[0]);
}
// Return number of times we saw a |0> and number of times we saw a |1>
return (count-numOnes, numOnes);
}
}
}
我也遇到了同样的错误,但我可以通过按 F5
键来完成。
可能 Visual Studio 编辑器还没有完全支持 .qs
文件。
.cs
文件和 .qs
文件之间的命名空间共享似乎无法正常工作。
我能够在我的开发环境中使用您的代码执行。
--
IDE:Visual Studio 社区 2017(版本 15.5.2)
开发工具包:Microsoft Quantum 开发工具包(0 和 1)
我在microsoft.quantum.development.kit/0.3.1811.203-预览版中遇到了同样的问题。
VSC 无法识别 BellTest 操作Pic of VSCode
我做的是,
- 保存所有但保持 VSCode 打开
- 转到目录并通过 /bin/rm -rf bin obj 删除 bin/ obj/ 中的所有内容
- 网络运行
- 你回去查看一下VSCode,现在VSC识别的BellTest