.NET Standard 2.0上的Alea.Gpu - 这个解决方法是否有效?

时间:2017-12-30 01:16:37

标签: c# .net visual-studio csproj aleagpu

我正在编写一个通过Alea.Gpu库支持GPU加速的库,到目前为止我的设置是:

  • 基础.NET Standard 2.0二进制文件(CPU)
  • 带有Alea.Gpu(GPU)的.NET Framework 4.7.1

我们的想法是,在.NET Core / UWP / Whatever上只使用基本.NET Standard 2.0库,并且在使用.NET Framework应用程序利用.NET Framework 4.7.1库时也包含.NET Framework 4.7.1库GPU支持。

由于Alea.Gpu是跨平台的(根据文档它也适用于Mono和Xamarin),我想我会将所有代码移到一个.NET Standard 2.0库中,然后用户就会能够在最终使用之前检查当前平台是否支持GPU功能。

问题是目前Alea.Gpu NuGet包似乎没有使用新的PackageReference设置,因此将其安装在.NET Standard 2.0库中会导致包成功添加,但依赖关系会丢失这个过程。 在实践中,我安装了Alea.Gpu,但我的库中没有任何命名空间(.dll文件也不存在)。

见这里:https://github.com/dotnet/standard/issues/481

我找到了一个似乎有效的解决方法,即使仅在.NET Framework上,也只是将这些行添加到库.csproj文件中:

<ItemGroup>
    <Reference Include="Alea">
        <HintPath>$(NuGetPackageRoot)\alea\3.0.4\lib\net45\alea.dll</HintPath>
    </Reference>
    <!-- Same for Alea.Parallel -->
</ItemGroup>

我的问题是:

  
      
  • 即使.dll文件未正确添加到库中,它们是否仍会在构建时下载,以便它们仍然在.csproj代码中的该文件夹中,在任何其他PC上也是如此?
  •   
  • 是否安全地说,在构建VS时,无论实际平台如何,都会在同一个net45子文件夹中恢复这些.dll文件?我的意思是,在恢复.NET Standard 2.0库的软件包时会自动回退到net45吗?
  •   
  • 是否还有其他(更好的)解决方法,直到Alea.Gpu更新为使用PackageReference,以便它自动包含那些.dll文件?
  •   

谢谢!

0 个答案:

没有答案