MathNet.Numerics的dll引用问题

sjkof 2019-06-20 09:52:26
情况是这样
我写了一个类库,引用了MathNet.Numerics的dll,并对MathNet.Numerics的DenseMatrix进行了封装


/// <summary>Construct a matrix</summary>
public Matrix(int rows, int cols)
{
denseMatrix = new DenseMatrix(rows, cols);
}

/// <summary>Construct a matrix by copying the data</summary>
public Matrix(double[,] data)
{
denseMatrix = DenseMatrix.OfArray(data);
}

public Matrix(int rows, int cols, double value)
{
denseMatrix = DenseMatrix.Create(rows, cols, value);
}


我的另一个project,引用了上述的类库,使用Matrix类,按理来说这个project是不需要再引用MathNet.Numerics的dll。
的确,当我使用上述构造函数1和3时,一切正常。但当我使用构造函数2时,编译时提示错误
类型“MathNet.Numerics.LinearAlgebra.Double.DenseMatrix”在未被引用的程序集中定义。必须添加对程序集“MathNet.Numerics, Version=4.8.1.0, Culture=neutral, PublicKeyToken=null”的引用。
这是为什么?
...全文
1296 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjkof 2019-06-21
  • 打赏
  • 举报
回复
后来发现可能是Mathnet.Numerics类库的一些函数使用了泛型,可能需要动态绑定,这样会导致构造函数中需要确定具体的类型定义。
我之后把所有的构造函数都改为了静态方法进行构造就没有这个问题了。
也或许是编译器不够好吧,之后会看看新版本的VS或者打上SP会不会就没有这样的问题。

感谢大家出了不少主意,结贴给分。
sjkof 2019-06-20
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
引用dll后 配置文件里可能没有生成
你把第一个封装里的配置文件app.config设置为始终复制。试试看


我的类库里引用dll后,类库里并没有自动生成app.config,需要自己添加?
正怒月神 2019-06-20
  • 打赏
  • 举报
回复
引用dll后 配置文件里可能没有生成 你把第一个封装里的配置文件app.config设置为始终复制。试试看
bloodish 2019-06-20
  • 打赏
  • 举报
回复
检查一下是否有多个MathNet.Numerics.dll存在,特别是早期的版本. 如果有,删除多余的版本,保证最新的程序集被正确引用.
诗和远方C 2019-06-20
  • 打赏
  • 举报
回复
我每次去修改别人的dll的时候,重新生成的时候有个文件中的某一行会报错,每次都要注释了就可以。你们的也是这样么
sjkof 2019-06-20
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
既然1,3可以正常运行
那么实际已经引用了MathNet.Numerics
不知道为什么2会报错,可能2是扩展方法?


因为MathNet.Numerics是开源的,我去看了代码

public static DenseMatrix Create(int rows, int columns, double value)
{
if (value == 0d) return new DenseMatrix(rows, columns);
return new DenseMatrix(DenseColumnMajorMatrixStorage<double>.OfValue(rows, columns, value));
}

public static DenseMatrix OfArray(double[,] array)
{
return new DenseMatrix(DenseColumnMajorMatrixStorage<double>.OfArray(array));
}


没看出特别之处。。。
stherix 2019-06-20
  • 打赏
  • 举报
回复
既然1,3可以正常运行 那么实际已经引用了MathNet.Numerics 不知道为什么2会报错,可能2是扩展方法?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧