小编Wil*_*lem的帖子

如何在包含第三方DLL文件的同时部署C#应用程序?

首先,我对部署知之甚少.我希望我的问题有道理.

我需要将C#应用程序安装/部署到许多桌面.它需要第三方DLL文件:一个C++库("lpsolve55.dll",对于那些感兴趣的人,它是一个免费的MIP/LP解算器,请参阅lpsolve.sourceforge.net/5.5/).我通过以下方式在我的代码中使用它:

    [DllImport("lpsolve55.dll", SetLastError = true)]
    public static extern bool add_column(int lp, double[] column);
Run Code Online (Sandbox Code Playgroud)

为了测试,我已经手动将.dll文件复制到了project\bin\release,它工作正常.

我的问题:我需要一个应用程序的安装程序,它将管理.dll也将安装.我正在考虑ClickOnce部署,因为我使用的是Visual C#2008 Express Edition,但任何不太昂贵的解决方案都可以.

你有什么建议?

c# deployment dll clickonce

10
推荐指数
2
解决办法
9515
查看次数

为什么重用数组会在c#中显着提高性能?

在我的代码中,我执行了大量任务,每个任务都需要大量内存来临时存储数据.我有大约500个任务.在每个任务开始时,我为数组分配内存:

double[] tempDoubleArray = new double[M];
Run Code Online (Sandbox Code Playgroud)

M是一个很大的数字,取决于精确的任务,通常大约2000000.现在,我做一些复杂的计算来填充数组,最后我使用数组来确定这个任务的结果.之后,tempDoubleArray超出范围.

分析表明构造数组的调用非常耗时.因此,我决定尝试重用数组,使其静态并重用它.它需要一些额外的杂耍来计算出阵列的最小尺寸,需要额外通过所有任务,但它可以工作.现在,程序更快(从80秒到22秒执行所有任务).

double[] tempDoubleArray = staticDoubleArray;
Run Code Online (Sandbox Code Playgroud)

但是,我有点不知道为什么这种方法运作得很好.我想在原始代码中,当tempDoubleArray超出范围时,可以收集它,所以分配一个新数组应该不那么难吗?

我问这个,因为理解为什么它会帮助我找出其他的方法来达到同样的效果,因为我想在什么情况下,分配给性能问题就知道了.

c# arrays garbage-collection reusability

9
推荐指数
1
解决办法
2314
查看次数