[AutoConstructor]
会自动生成一个构造函数(如下图):
它在 Visual Studio 中运行良好,但 JetBrains Rider 出现错误消息:
我不明白。 . .
(因为英语不好,所以用谷歌翻译提问,请见谅)
using System;
using System.Linq;
using ComputeSharp;
namespace ComputeSharpTest
{
class Program
{
static void Main(string[] args)
{
// Allocate a writeable buffer on the GPU, with the contents of the array
// Get some sample data
int[] array = Enumerable.Range(1, 1000000).ToArray();
// Allocate a GPU buffer and copy the data to it.
// We want the shader to modify the items in-place, so we
// can allocate a single read-write buffer to work on.
using ReadWriteBuffer<int> buffer = Gpu.Default.AllocateReadWriteBuffer(array);
// Launch the shader
Gpu.Default.For(buffer.Length, new MultiplyByTwo(buffer));
// Get the data back
buffer.CopyTo(array);
}
}
[AutoConstructor]
public readonly partial struct MultiplyByTwo : IComputeShader
{
public readonly ReadWriteBuffer<int> buffer;
public void Execute()
{
buffer[ThreadIds.X] *= 2;
}
}
}
答案 0 :(得分:0)
根据 https://github.com/Sergio0694/ComputeSharp/issues/116(以及 https://github.com/Sergio0694/ComputeSharp#requirements):
<块引用>为了正常工作,ComputeSharp 还需要源 生成器作为分析器添加到消费项目中,以便它 可以在编译代码时运行。
您可以通过将以下代码添加到您的 .csproj 文件中来实现,只需 就像在示例项目中一样:
<ItemGroup>
<ProjectReference Include="..\..\src\ComputeSharp\ComputeSharp.csproj" />
<ProjectReference Include="..\..\src\ComputeSharp.SourceGenerators\ComputeSharp.SourceGenerators.csproj"
OutputItemType="Analyzer"
ReferenceOutputAssembly="false"
PrivateAssets="contentfiles;build" />
</ItemGroup>
此外,您需要确保您使用的是 .NET 5(不是 .NET Framework/Core 的早期版本)。
如果您的问题仍然存在,您可能还希望尝试使用 VS 2019 而不是 Rider。