1

当我尝试在发布模式下编译一个依赖于 MathNet.Numerics NuGet 包 (PCL Profile7) 的普通 UWP 应用程序时,我遇到了内部编译器错误NUTC3028相关的 Github 问题

NUTC3028:Internal Compiler Error: Method

  'instance Tuple<int, int, T, TOther>
   DenseColumnMajorMatrixStorage<T>.Find2Unchecked<TOther>(MatrixStorage<TOther>,
   Func<T,TOther,bool>, Zeros)'

on type

  'DenseColumnMajorMatrixStorage<T>'

from assembly

  'MathNet.Numerics'

tried to implicitly override a method with weaker type parameter
constraints while loading type

  'DenseColumnMajorMatrixStorage<T>'.

while computing compilation roots.

DenseColumnMajorMatrixStorage<T>继承自MatrixStorage<T>,它们都具有相同的约束where T : struct, IEquatable<T>, IFormattable

override DenseColumnMajorMatrixStorage<T>.Find2Unchecked<TOther>(..)overrides virtual MatrixStorage<T>.Find2Unchecked<TOther>(..),后者对泛型方法类型参数再次具有相同的约束:where TOther : struct, IEquatable<TOther>, IFormattable. 在 C# 中,重写时无法更改甚至声明约束,因此在重写方法中没有额外的约束。

我并没有完全遵循应该更弱的类型参数约束;它们在我看来完全一样。我错过了什么?

警告:复制这可能需要一段时间;在我的机器上,ilc 运行了大约两个小时(原文如此!),然后出现错误

4

1 回答 1

2

我认为如果您迁移到 Windows 工具 1.3.1(又名 VS 2015 Update 2),这将得到纠正。你可以在这里看到更多关于它的讨论:https ://github.com/mathnet/mathnet-numerics/issues/361

如果您发现情况并非如此,请告诉我。

于 2016-05-23T22:44:26.427 回答